💻 IT/📌 ALG

[프로그래머스] 크레인 인형뽑기 게임 :: JAVA 풀이 , Stack 이용하기

GODSU 2022. 3. 14. 22:34
반응형

 

오늘은 프로그래머스 "크레인 인형뽑기 게임" 문제를 풀이를 해볼께요!

 

문제

 

 

반응형

 

 

풀이

문제를 보자마자 저는 Stack을 이용 해야겠다는 생각이 들었습니다. 왜냐하면 스택의 특성 "first in last out 가장 먼저 들어온게 나중에 나간다" 특성 때문입니다. 본 문제에서 인형이 차곡차곡 쌓이면서 동일한게 있으면 가장 나중에 들어온 숫자를 제거하면 되기 때문입니다.

 

추가적으로, moves에 있는 숫자들은 board의 세로열 index-1과 동일한 것이 파악할 수있어 2차원 배열 문제를 손쉽게 접근 할 수있습니다!

 

import java.util.Stack;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        int tmpNum = 0;
        
        Stack<Integer> stack = new Stack();

        for(int i = 0; i<moves.length-1; i++) { 
        	tmpNum = moves[i]; 
        	for(int j = 0; j<board.length; j++) {
        		if(board[j][tmpNum-1] > 0) {
        			stack.push(board[j][tmpNum-1]);
        			board[j][tmpNum-1] = 0;
        			break;
        		}
        	}
     
        	if(stack.size()>1) {
        		int num1 = stack.pop();
        		int num2 = stack.pop();
        		        		
        		if(num1!=num2) {
        			stack.push(num2);
        			stack.push(num1);
        		}else {
        			answer++;
        		}
        	}
        }
        return answer*2;
    }
}

 

반응형