프로그래머스 크레인 인형뽑기 게임 Java - 2019 카카오 개발자 겨울 인턴십

문제

주어진 맵에서 인형뽑기의 움직임(moves)에 따라 인형을 뽑고 바구니에 옮겨서 저장한다. 바구니에서 같은 인형이 만나서 터진 인형의 갯수를 반환하는 문제이다.

접근

풀이

1번

int answer = 0;

int row = board.length;
Stack<Integer> stack = new Stack<>();

for(int pos : moves) {
    pos = pos-1;

    for(int i=0 ; i<row ; i++) {
        if(board[i][pos] != 0) {
            int val = board[i][pos];

            if(!stack.isEmpty() && stack.peek() == val) {
                stack.pop();
                answer += 2;
            } else {
                stack.push(val);
            }

            board[i][pos] = 0;					
            break;
        }
    }
}		

return answer;

이 문제에서 Stack 메소드인 isEmpty() : 비어있는지, peek() - 꼭대기 값, pop() - 마지막에 넣은 값 빼기, push() - 값 넣기에 대해 학습할 수 있다. 스택은 LIFO(Last In First Out)으로 가장 마지막에 넣은 값이 빨리 나오는 자료구조이다.

결론



Related Posts