[Java] 프로그래머스 : 크레인 인형뽑기 게임

728x90

[Java] 프로그래머스 : 크레인 인형뽑기 게임

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


접근

바구니는 스택으로 구현하고, 집어들어 올린 인형과 스택의 최상단에 있는 값이 일치할 경우, answer에 2점씩 추가해주면 된다.

 

moves 각각의 값은 집게가 움직이는 고정된 열이며, 행은 board.length를 순회하도록 하여 집게의 움직임을 구현할 수 있다.

 

 

인형을 집었으면 해당 위치를 0으로 만들어서 나중에 집게가 똑같은 위치를 오게되면 더 아래의 위치로 이동할 수 있도록 해야한다.

 

코드

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack <Integer> stack = new Stack<>();
        
        for (int m : moves) { 
            for (int j = 0; j < board.length; j++) { 
                int doll = board[j][m - 1];
                if (doll == 0) { 
                    continue;
                    
                }
                else { // 해당 열에 인형이 있다?
                    board[j][m - 1] = 0; // 집게로 집어서 빈자리로 만들기.
                }
                
                
                if (!stack.isEmpty() && stack.peek() == doll) { // 바구니 맨 위에 있던 인형이랑 현재 인형이랑 같으면?
                    stack.pop(); // 바구니 맨 위의 인형 없애고 점수 부여.
                    answer += 2;
                }
                else {
                    stack.push(doll);
                }
                break; // 다음 move 값으로 이동
            }
        }
        return answer;
    }
    
    
}
728x90