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

- 인형을 담는 바구니는 stack으로 구현

- 인형을 뽑아서 바구니에 넣기 전에 peek로 동일한 인형을 뽑았는지 확인을 한다. 동일한 answer를 2 증가시키고, pop 해서 동일한 인형을 제거

import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        
        int answer = 0;
        
        Stack<Integer> stk = new Stack<Integer>();	// 바구니    
        
        for (int i = 0; i < moves.length; i++) {	// 이동시키기
			int crainPosition = moves[i] - 1;
			for (int j = 0; j < board.length; j++) {				
				if(board[j][crainPosition] != 0) {					
					int doll = board[j][crainPosition];	// 뽑은 인형
					board[j][crainPosition] = 0; // 뽑은 자리는 빈자리로 설정
					
					// 바구니에 넣기
					if(stk.isEmpty()) {		// 비어있으면 그냥 넣음
						stk.push(doll);
					} else {	// 비어있지 않으면, 어떤 인형인지 확인
						if(doll == stk.peek()) {	// 같은 인형이면
							answer+=2;	// 인형제거는 항상 2개씩임
							stk.pop();
						} else {
							stk.push(doll);	// 다른 인형이면
						}
					}					
					break;
				}
			}
		}        
        return answer;
    }
}

'JAVA > 프로그래머스' 카테고리의 다른 글

34. LEVEL1 - 실패율  (0) 2021.08.27
32. LEVEL1 - 비밀지도  (0) 2021.08.26
32. LEVEL1 - 키패드 누르기  (0) 2021.08.26
31. LEVEL1 - 직업군 추천하기  (0) 2021.08.26
30. LEVEL 1 - 숫자 문자열과 영단어  (0) 2021.08.25