[ 2019 카카오 겨울 인턴십 - 크레인 인형뽑기 게임 ]
https://programmers.co.kr/learn/courses/30/lessons/64061
- 인형을 담아줄 리스트를 하나 선언해주고, 인형의 개수를 세어줄 변수를 선언 (개수를 세어줄 값은 인덱스를 직관적으로 보기 위해 -1로 초기화)
- 배열 moves의 길이 만큼 for문을 돌리고 line변수를 통해 몇 번째 라인의 인형을 뽑을지 담는다.
- 보드가 비어있지 않으면 리스트에 담아준다. 그 후 해당 board배열은 0값으로 바꾸어 빈칸임을 표시하고 인형의 개수를 나타내는 변수의 값을 증가(++) 시켜준다.
- 인형이 1개 이상 있는 경우 들어온 인혀이랑 그 전에 들어온 인형이랑 비교하여 같은 인형이라면 리스트에 있는 배열 두개를 지우고, 인형의 개수 또한 2개 지우며, answer에 2를 증가 시키며 최종적인 answer값을 리턴.
import java.util.ArrayList;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int dollCount = -1;
ArrayList<Integer> getDoll = new ArrayList<Integer>();
for(int i=0; i<moves.length; i++) {
int line = moves[i] - 1;
for(int j=0; j<board.length; j++) {
if(board[j][line] != 0) {
getDoll.add(board[j][line]);
board[j][line] = 0;
dollCount++;
if(dollCount>0) {
if(getDoll.get(dollCount) == getDoll.get(dollCount-1)) {
getDoll.remove(dollCount);
getDoll.remove(dollCount-1);
dollCount -= 2;
answer += 2;
}
}
break;
}
}
}
return answer;
}
}