본문 바로가기
Algorithm/문제풀이

[Codility] Fish (Easy) by javascript - AVAILABLE LESSONS 7

by 썸머워즈 2022. 4. 20.
반응형

▷ 문제 : AVAILABLE LESSONS 7 - Fish (Easy)

 

Fish coding task - Learn to Code - Codility

N voracious fish are moving along a river. Calculate how many fish are alive.

app.codility.com

▷ 해결 날짜 : 2022.04.20
▷ 소요 시간 : 40분
▷ 풀이 과정 :

내려오는 물고기와 올라가는 물고기를 싸움 붙여서 마지막에 살아남은 물고기의 개수를 출력하는 문제이다.덩치큰 물고기가 덩치가 작은 물고기를 잡아먹는 구조이며 속도가 같아 같은 방향의 물고기끼리는 만날수 없다.

 

처음에는 올라가는 물고기 내려가는 물고기 둘다 나눠서 배열에 담아주려다가굳이 올라가는 물고기는 필요없을 거 같아서 내려가는 물고기를 따로 스택에 담아주고 현재 올라가는 물고기와 비교를 해주는 로직을 구현하였다.

 

▷ 구현

function solution(A, B) {
    let count = 0;
    const downstream = [];
    for(let i = 0 ; i < A.length ; i++){
        let fish = A[i];
        if(B[i]) downstream.push(fish);
        else{
            while(downstream.length){
                const downFish = downstream.pop();
                if(downFish > fish){
                    downstream.push(downFish);
                    break;
                }
            }
            if(!downstream.length) count++;
        }
    }
    return count + downstream.length;
}


▷ 복기 :

스택 큐를 쉽게만 봤는데 그런 쪽으로 생각을 해서 푼다는게 아직 좀 어색한것같다.많이 풀면 나아지겠지

반응형


댓글

TOP