java 프로그래머스 _크레인인형뽑기

2021. 5. 5. 00:49프로그래머스 알고리즘/코딩 테스트 문제

반응형

 

 

출제 링크 : 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.*;

class Solution {
	public int solution(int[][] board, int[] moves) {
		int answer = 0;

		List<Queue<Integer>> boardQue = new ArrayList<Queue<Integer>>();
		Stack<Integer> out = new Stack<Integer>();

		for (int i = 0; i < board.length; i++) {
			Queue<Integer> dammy = new LinkedList<Integer>();
//			System.out.println("===========" + i + "번째=========");
			for (int j = 0; j < board.length; j++) {
				if (board[j][i] != 0) {
					dammy.add(board[j][i]);
//					System.out.println(board[j][i]);
				}
			}
//			System.out.println("======================");
			boardQue.add(dammy);
		}

		for (int i = 0; i < moves.length; i++) {
			int num = moves[i] - 1;
//			System.out.println("input : " + boardQue.get(num).peek());
			if (out.isEmpty()) {
				out.add(boardQue.get(num).poll());
			} else if (!boardQue.get(num).isEmpty()) {
//				System.out.println("===========================");
//				System.out.println("out peek      : " + out.peek());
//				System.out.println("boardQue peek : " + boardQue.get(num).peek());
				if (out.peek() == boardQue.get(num).peek()) {
					out.pop();
					boardQue.get(num).poll();
					answer += 2;
				} else {
					int temp = boardQue.get(num).poll();
//					System.out.println("저장 num : " + temp);
					out.add(temp);
//					System.out.println("다르므로 out 저장");
				}
//				System.out.println("===========================");
			}
		}

		return answer;
	}
}

 

 

반응형