코딩테스트

[코딩테스트(Java)] 프로그래머스 64061 크레인 인형뽑기 게임

inhooo00 2025. 3. 14. 16:51

https://school.programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

public int solution(int[][] board, int[] moves) {
    int answer = 0;
    Stack<Integer> stack = new Stack<>();

    for (int num : moves) {
        for (int j = 0; j < board.length; j++) {
            if (board[j][num - 1] != 0) {
                if (!stack.empty() && stack.peek() == board[j][num - 1]) {
                    stack.pop();
                    answer += 2;
                } else {
                    stack.add(board[j][num - 1]);
                }
                board[j][num - 1] = 0;
                break;
            }
        }
    }
    return answer;
}

 

 

📍포인트

1. 알맞은 숫자를 누적해가는 로직 필요.
2. 숫자를 빼면 0으로 처리.
3. 중복을 없애며 answer을 2씩 증가하는로직 필요.

 

 

 

📍삽질

1. stack 문제는 너무 오랜만이라 순수 구현으로 진행하다가 꺾었다.
2. peek, pop 메서드 정확히 알자.
3. stack이 empty일 경우 예외처리.