ALGORITHM/PROGRAMMERS

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

0298 2020. 11. 7. 21:04

programmers.co.kr/learn/courses/30/lessons/64061?language=java

 

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

[[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

2020-11-07


import java.util.ArrayList;

class Solution {
    public static int cpboard[][], cpmove[], blen, count;
	public static ArrayList<Integer> list;
	
    	public static void search(int x) {
		for(int i = 0; i < blen; i++) {
			if(cpboard[i][x] > 0) {
				list.add(cpboard[i][x]);
				cpboard[i][x] = 0;
				break;
			}
		}
	}
	
	public static void checkRemove() {
		for(int i = 1; i < list.size(); i++) {
			if(list.get(i) == list.get(i-1)) {
				list.remove(i);
				list.remove(i-1);
				count+=2;
			}
		}
	}
    
    public int solution(int[][] board, int[] moves) {
        cpboard = board;
		cpmove = moves;
		count = 0;
		list = new ArrayList<Integer>();
		blen = board[0].length;
		
		for(int i = 0; i < moves.length; i++) {
			search(moves[i]-1);
			checkRemove();
		}
        return count;
    }
}

1. moves 배열에 받은 입력값대로 배열의 줄을 탐색하면서, 가장 윗줄에 있는 값을 arraylist에 넣고 원래 배열 값을 0으로 바꾼다.

 

2. 바구니에 값이 있다면, 현재 값과 그 전 값을 비교하여 같은 경우 둘 다 제거하고 +2 카운트를 한다.