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