Programmars-크레인 인형뽑기 게임

dropKick·2020년 6월 25일
0

코딩테스트

목록 보기
1/17

JDK11 문제 풀이

  • 첫 문제로 풀다보니 30분 정도 배열 모습에 헤맴
  • 행열을 조금만 더 진지하게 생각했다면 빠르게 눈치 챘을 수 있었는데..
  • 임시 배열을 통해 값을 집어넣고 비교했으나 마지막 데이터만 비교하고, 마지막 데이터만 빼면 된다는 사실을 깨달음
    임시 스택을 만들어 값을 비교
  • 한번에 하나의 인형만 뽑을 수 있도록 break를 걸었어야했는데
    안걸어서 20인가 30까지 나옴

항상 자료구조는 비었을 때, 비지 않았을 때를 체크해서 예외를 방지해야한다!!!!

구현

public static int solution(int[][] board, int[] moves) {
        int answer = 0;
        int movesIdx;
        Stack<Integer> temp = new Stack<>();
        for (int move : moves) {
            movesIdx = move - 1;
            for (int j = 0; j < board.length; j++) { // 열 고정, 행만 내림
                if (board[j][movesIdx] != 0) {
                    if (temp.isEmpty()) {
                        temp.push(board[j][movesIdx]);
                    } else {
                        if (temp.peek() == board[j][movesIdx]) {
                            answer += 2;
                            temp.pop();
                        } else {
                            temp.push(board[j][movesIdx]);
                        }
                    }
                    board[j][movesIdx] = 0;
                    break; // 안걸면 인형 계속 가져온다
                }
            }
        }
        return answer;
    }

0개의 댓글