JavaScript/JS_Algorithm

[인프런 - JS 알고리즘 문제풀이] stack판단3

느리지만 꾸준하게 2021. 8. 5. 19:20

바구니에 인형을 담고 같은 것이 두개가 담겨지면 터지는 구조이다.

총 몇개 터지는지 출력하는 코드를 작성해보자.

아래 코드를 보자.

<body>
    <script>
        function solution(board, moves) {
            let answer = 0;
            // 빈 스택을 만들어 주고
            let stack = [];
            // board 길이만큼 for문 돌아주고
            moves.forEach(pos => {
                for (let i = 0; i < board.length; i++) {
                // 게임화면에 들어있는 인형이 0이 아니라면
                    if (board[i][pos - 1] !== 0) {
                    // 크레인의 위치의 인형 지정해주고
                        let tmp = board[i][pos - 1];
                        // 넣었던 인형의 위치를 0으로 만들어주고
                        board[i][pos - 1] = 0;
                        // 크레인위치 인형이랑 바구니 스택에 젤위에 값과 같으면
                        if (tmp === stack[stack.length - 1]) {
                        // 스택에서 pop해주고
                            stack.pop();
                            // 두개 터지니까 2해준다.
                            answer += 2;
                        }
                        // 아니면 스택에 tmp푸시해준다.
                        else stack.push(tmp);
                        break;
                    }
                }
            });

            return answer;
        }

        let a = [[0, 0, 0, 0, 0],
        [0, 0, 1, 0, 3],
        [0, 2, 5, 0, 1],
        [4, 2, 4, 4, 2],
        [3, 5, 1, 3, 1]];

        let b = [1, 5, 3, 5, 1, 2, 1, 4];
        console.log(solution(a, b));
    </script>
</body>

 

 

<출처 : 자바스크립트 알고리즘 문제풀이(코딩테스트 대비): 김태원>

참고:

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

 

자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., 개발

www.inflearn.com