알고리즘/Codility
[Codility] Fishes (JavaScript)
devpine
2025. 6. 14. 21:50
반응형
https://app.codility.com/programmers/lessons/7-stacks_and_queues/fish/
Fish coding task - Learn to Code - Codility
N voracious fish are moving along a river. Calculate how many fish are alive.
app.codility.com
문제:
살아남은 물고기의 수를 계산 및 반환한다. 각 물고기는 이동 방향과 크기가 있다. 반대방향의 물고기를 만났을 때, 상향하는 물고기가 더 크다면 먹는다.
내 풀이:
/**
* 살아남은 물고기의 수를 계산 및 반환하는 함수
*
* 각 물고기는 이동 방향과 크기가 있다.
* 반대방향의 물고기를 만났을 때, 상향하는 물고기가 더 크다면 먹는다.
* @params {number[]} A - 물고기 크기 배열
* @params {number[]} B - 물고기 방향 배열
* @returns {number} 마지막으로 살아남은 물고기의 수
*/
function solution(A, B) {
const downFishes = [];
let upFishesCnt = 0;
for (let i = 0; i < B.length; i++) {
if (B[i] === 1) {
// 하류 물고기
downFishes.push(A[i]);
} else {
while (downFishes.length > 0) {
if (downFishes[downFishes.length - 1] < A[i]) {
// 상류 물고기가 더 크다면 먹는다!
downFishes.pop();
} else {
break;
}
}
if (downFishes.length === 0) {
upFishesCnt++;
}
}
}
return downFishes.length + upFishesCnt;
}
- 채점결과: 100%
반응형