2019년 카카오 겨울인턴십 문제를 풀어보았다.
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int[][] board, int[] moves) {
List<Integer> list = new ArrayList<>();
int answer = 0;
for (int move : moves) {
for (int i = 0; i < board.length; i++) {
if(board[i][move-1] != 0) {
list.add(board[i][move-1]);
board[i][move-1] = 0;
break;
}
}
}
return solution2(list)*2;
}
public static int solution2(List<Integer> list) {
boolean found = false;
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i).equals(list.get(i + 1))) {
list.remove(i);
list.remove(i);
found = true;
break;
}
}
if (found) {
return 1 + solution2(list);
} else {
return 0;
}
}
}
뽑은 인형은 순서대로 list 에 때려넣었고, solution2 에서 연속값 검사를 했다.
단, 4,3,3,4 같은 순서로 list 가 구성되면 3,3 이 지워지고 다시 4,4 가 만난다.
이를 위해 solution2 를 재귀적으로다가 호출해서 처리했다.