본문 바로가기
알고리즘/프로그래머스 풀이

[JAVA] 2019 카카오 개발자 겨울 인턴쉽 크레인 인형뽑기 게임 풀이

by krapoi 2021. 10. 13.
반응형

이 문제는 https://programmers.co.kr/learn/courses/30/lessons/64061 이곳에서 확인할 수 있다.

import java.util.Stack;

public static int solution(int[][] board, int[] moves) {
        int result = 0;
        Stack<Integer> s = new Stack<>();
        for(int i : moves){
            for(int j = 0; j < board.length; j++){
                if(board[j][i - 1] != 0){
                    if(!s.isEmpty() && s.peek() == board[j][i-1]){
                        s.pop();
                        result += 2;
                    }else {
                        s.add(board[j][i - 1]);
                    }
                    board[j][i-1] = 0;
                    break;
                }

            }
        }

        return result;

 

이 문제에서는 스택을 사용하였다.

일단 인덱스가 터지지 않게 for each문을 사용해 i를 moves로 돌린다.

그다음 for문에서 board의 길이만큼 j를 돌리며  만약 board [ j ][ i-1 ]이 0이 아니고 비어있지 않으며 지금 가지고 있는 값과 전에 들어온 값이 같다면 스택 값을 pop 해주고 result를 +2 해준다. 만약 아니라면 그 값을 스택에 추가해 준다.

그리고 그 board의 값은 이미 바구니에 넣어주었기 때문에 0으로 바꾸어준다.

 

반응형