알고리즘/프로그래머스

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

Ellie67 2021. 6. 28. 17:21

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

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

스택으로 바구니를 만들고

바구니에 있는 인형과 뽑을 인형을 비교해서 바구니 제일 위에 있는 인형이면 2개 같이 터트림

 

public static int solution(int[][] board, int[] moves) {
        int answer = 0;
        
        Stack<Integer> stack = new Stack<>(); // 바구니
        stack.push(0); // 값 같은지 비교하기 위해 초기값 필요함
        
        for(int move : moves) { 
        	for(int i=0; i<board.length; i++) {
        		if(board[i][move-1] !=0 ) { // 0이 아니라면 인형이 있음
        			if(stack.peek() == board[i][move-1]) { // 바구니에 넣을 인형이 바구니에 있는 인형과 같다면
        				stack.pop(); // 바구니에서 제거
        				answer+=2; // 사라진 인형 2개 추가
        			} else { // 바구니에 있는 인형이 아니라면 
        				stack.push(board[i][move-1]); // 바구니에 넣음
        			}
        			board[i][move-1] = 0; // 뽑은 인형 자리 0으로 바꿔줌
        			break;
        		}
        	}
        }
        return answer;
    }