비버놀로지

[Programmers 프로그래머스] 64061 크레인 인형뽑기 게임 본문

ALGORITM/JAVA

[Programmers 프로그래머스] 64061 크레인 인형뽑기 게임

KUNDUZ 2021. 1. 6. 22:43
728x90

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

크레인 인형뽑기 게임에서 해당하는 위치의 위에서부터 아래로 내려가면서 인형이 있는곳까지 내려가 인형이 있는 곳 까지 내려갔을 때 위치는 스텍에 쌓아준다.

그렇게 쌓여있는 스텍에 같은 인형이 들어오면 스텍에 있는 가장 위에 인형을 빼주고, 결과값에 1을 더해준다.

 

링크드리스트를 이용한 풀이법이다.

 

 

 

import java.util.LinkedList;

public class 크레인인형뽑기게임 {
	public static void main(String[] args) {
		int [][]board = {{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}};
		int [] moves = {1,5,3,5,1,2,1,4};
		int answer=0;
		
		LinkedList<Integer> stack=new LinkedList<Integer>();
		
		
		for (int i = 0; i < moves.length; i++) { //세로로 내려가면서 인형의 위치를 찾는다.
			int temp=0;
			if(!stack.isEmpty()) {
				temp=stack.getLast();
			}
			for (int j = 0; j < board.length; j++) {
				if(board[j][moves[i]-1]!=0) {
					stack.add(board[j][moves[i]-1]); //찾은 인형을 스텍에 넣는다.
					board[j][moves[i]-1]=0;
					break;
				}
			}
			if(!stack.isEmpty()&&temp==stack.getLast()) { //같은게 들어오면 인형을 꺼내준다.
				stack.pollLast();
				stack.pollLast();
				answer+=2;
			}
		}
		System.out.println(answer);
	}
}

 

 

728x90
Comments