Hodustory/프로그래밍&DB

프로그래머스 : 크레인 인형뽑기 게임(JAVA)

호두밥 2021. 7. 22. 17:39

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

스택 이용

import java.util.Stack;

class Solution {
	public static int solution(int[][] board, int[] moves) {
     	 //스택 : 뽑아놓은 인형들
        int answer = 0; // 사라진 인형의 갯수
        
        Stack<Integer> pick =  new Stack<>();
        
        for( int i : moves ) {
        
        	for( int j = 0; j < board[i-1].length ; j++) {
        		
        		if(board[j][i-1] != 0 ) {
        			
        			//1. 크레인이 도달할때마다 맨 위의 인형을 하나씩 뽑아서 pick에 담기
        			if(pick.isEmpty()) { // pick에 인형이 없으면 그냥 넣기
        				pick.push(board[j][i-1] );
        			}else {
        			//2. 새로 뽑은 인형과 pick의 맨 위 인형이 같은거면 인형을 삭제	
        				if (pick.peek()== board[j][i-1]) {
        					pick.pop();
        			//2.1 인형을 삭제 후 사라진 인형갯수 + 2 (뽑은 것과 기존것 2개의 인형이 사라짐);		
        					answer = answer +2;
        				}else {  
        			//3. 새로 뽑은 인형과 pick의 맨 위 인형이 다르면 그냥 pick에 쌓기		
        					pick.push(board[j][i-1] );       					
        				}
        			}
        			
        			board[j][i-1] = 0;
        			break;
        		}
        		
        	}
        }
        
        return answer;
	}
}

 

 

반응형