알고리즘 스터디 7월 1주차 문제2 (크레인 인형 뽑기)

문제#

  • 링크로 대체

풀이 및 주저리..

조금 쉬운 문제를 찾다가 갑자기 재밌어 보여서 풀어본 문제이다. 카카오 2019 겨울 인턴쉽 문제 중 아마 가장 쉬운 문제가 아닐까 싶다. 인형배열 만큼 스택을 만들고 또 인형을 고를때도 스택을 이용해서 풀수도 있었겠지만 그렇게 풀지 않으려고 하다가 고생한 문제이다.. 근래에 알고리즘 문제를 많이 풀지 않다보니 감이 죽는 것 같기도하고.. 머리속으로 복잡한 계산이 쉽게 되지않았다. 마지막까지 골치 먹었던게.. 없어진 인형의 수.. 곱하기 2를 해주는 걸 발견하지 못해서 디버깅까지하고 시간을 낭비했다.. 문제를 다시 잘 읽는 연습은 끝이없는것 같다..emoji-sob

코드

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        int[] numArr = new int[board.length + 1];
        int n = board.length;
        Stack<Integer> stockStk = new Stack<>();
        Arrays.fill(numArr, n);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (board[i][j] != 0) numArr[j + 1]--;
            }
        }

        // stack이 비었는지?

        for (int i : moves) {
            if (numArr[i] != n) {
                int pick = board[numArr[i]][i - 1];
                if (!stockStk.isEmpty() && stockStk.peek() == pick) {
                    stockStk.pop();
                    answer++;
                } else {
                    stockStk.push(pick);
                }
                numArr[i]++;
            }
        }


        return answer * 2;
    }
}

기억에 남길 것!

  • 문제를 다시 한번 꼼꼼하게 읽기..:thinking:
© 2020 JunhoBaik, Built with Gatsby