- 전체코드
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int[] basket = new int[board.length*board[0].length]; //board의 가로 * 세로의 값
int basketTop = 0;
for(int m : moves) {
for(int i = 0 ; i < board[0].length ; i++) {
if(board[i][m-1]!=0) {
basket[basketTop] = board[i][m-1];
board[i][m-1] = 0;
if(basketTop!=0) { //바구니에 처음 인형을 쌓는 경우가 아닐경우에만
if(basket[basketTop-1]==basket[basketTop]) {
answer += 2;
basketTop--;
}
else {
basketTop++;
}
}
else {
basketTop++;
}
break;
}
}
}
return answer;
}
}
- 막혔던점 & 해결법
- 바구니의 크기를 어떻게 설정할지에 대해 고민을 많이했다. 연결리스트로 하는것이 메모리의 할당측면에서 유리하겠지만, 문제를 푸는데 있어서 중요한 요소가 아니기에 배열로 하기로 결정하였다. 문제 설명에는 모든 인형이 들어갈 수 있을 만큼 충분히 크다고 가정하였기에 제한사항에 따른 board크기에 따라 바구니의 크기를 만들기로 하였다.