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

LaStella·2021년 10월 23일
0

- 전체코드

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;
    }
}

- 막혔던점 & 해결법

  1. 바구니의 크기를 어떻게 설정할지에 대해 고민을 많이했다. 연결리스트로 하는것이 메모리의 할당측면에서 유리하겠지만, 문제를 푸는데 있어서 중요한 요소가 아니기에 배열로 하기로 결정하였다. 문제 설명에는 모든 인형이 들어갈 수 있을 만큼 충분히 크다고 가정하였기에 제한사항에 따른 board크기에 따라 바구니의 크기를 만들기로 하였다.
profile
개발자가 되어가는 중...

0개의 댓글