카카오 코딩테스트 - 크레인 인형뽑기 게임

greenTea·2023년 9월 4일
0
import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();
        for (int i=0;i<moves.length;i++) {
            int cx = moves[i]-1;

            for (int j=0;j<board[cx].length;j++) {
                if (board[j][cx] == 0)
                    continue;
                if (!stack.isEmpty() && stack.peek() == board[j][cx]) {
                    stack.pop();
                    answer+=2;
                } else 
                    stack.push(board[j][cx]);
                
                board[j][cx] = 0;
                break;
            }
            
        }
        return answer;
    }
}

🤓단순 구현에 가까운 문제였습니다.
풀이 방법은 아래와 같습니다.

  1. moves를 for문을 돌리는데 moves를 x축으로 생각하여 board에서 값을 고릅니다. 이 때 board의 값이 0이 아닌 경우에만 체크하도록 로직을 구현합니다.
  2. 0일 경우 continue로 넘어가주고 아니라면 stack의 값을 확인합니다.
  3. stack이 비어있지 않고 마지막 값을 확인한 결과 현재 크레인으로 뽑은 값과 같은 경우 해당 stack의 마지막 값을 지워주고 정답값에 2를 더해줍니다. 그 이외에는 stack에 현재 값을 넣어줍니다,
  4. 크레인으로 값을 뽑았으므로 해당 위치를 0으로 만들어주고 for문을 종료해줍니다.(while문으로 해도 상관 없습니다.)

출처 : 프로그래머스 - 크레인 인형뽑기 게임

profile
greenTea입니다.

0개의 댓글