<풀기 전 생각>

뽑은 인형의 갯수가 불확실 하므로 길이가 가변적인 자료구조 사용이 필요하다 -> ArrayList, Set, Stack, Queue, Deck

나머지는 단순 for, if 문으로 해결이 가능해 보였다.

 

<중간 문제점>

처음에 1번 하고 2번이 런타임 에러가 나왔었는데  생각해보니 그 이유는 인형 뽑기에서 0을 뽑은 경우는 아무 것도 안한 걸로 취급해야 하는데 0을 뽑아서 담은 걸로 취급하는 식으로 코드를 짜서 해당 문제가 발생한 것 이었다.

 

<최종 코드>

import java.util.ArrayList;

class Solution {
    private int pickUp(int [][]board, int num){
        int doll=0;
        for(int i=0;i<board.length;i++){
            if(board[i][num-1]!=0){
                doll = board[i][num-1];
                board[i][num-1] = 0;
                break;
            }
        }
        return doll;
    }
    // 시간 복잡도 O(n*m) 공간 복잡도 O(n)
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        ArrayList<Integer> collections = new ArrayList<Integer>();
        // length-1 = -1 방지
        collections.add(0);
        for(int i=0;i<moves.length;i++){
            int lastIndex = collections.size()-1;
            int before = collections.get(lastIndex);
            int curr = pickUp(board,moves[i]);
            if(curr == 0)
                continue;
            if(before==curr) {
                collections.remove(lastIndex);
                answer+=2;
            }
            else
                collections.add(curr);
        }

        return answer;
    }
}

<메모>

가변적인 길이의 자료구조만을 생각해서 ArrayList를 사용하였는데 다시 생각해보니 Stack을 사용하는게 이 문제 취지에 훨씬 알맞는 내용이지 않았을까 싶다.

'PS > Level1' 카테고리의 다른 글

둘만의 암호  (0) 2023.02.19
자연수를 뒤집어 배열로 만들기  (0) 2023.02.18
로또의 최고 순위와 최저 순위  (3) 2023.02.04
[1차] 다트 게임  (0) 2023.02.02
Programmers School level 1: 실패율  (1) 2023.01.31

+ Recent posts