문제
https://programmers.co.kr/learn/courses/30/lessons/64061
풀이
문제의 설명이 아주 친절하기 때문에 그대로 풀면되는 간단한 구현 문제였다.
이중 for문을 통해 해당 열의 가장 위에 있는 인형을 확인한다. 이 과정에서 기존 스택의 가장 위에 있는 인형(basket.peek( ))과 가장 위에 있는 인형(value)을 비교해서 동일하다면 스택에 있는 인형을 제거하고, 아니라면 인형을 스택에 넣는다. 이때, 스택에 먼저 인형을 하나 넣음으로써 peek( )메소드 호출 시 발생하는 index error문제를 방지한다.
코드
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int LEN = board.length;
Stack<Integer> basket = new Stack<>();
basket.push(-1);
for (int num:moves) {
int c = num-1;
for (int i=0; i<LEN; i++) {
if (board[i][c] != 0) {
int value = board[i][c];
if (basket.peek() == value) {
basket.pop();
answer += 2;
} else {
basket.push(value);
}
board[i][c] = 0;
break;
}
}
}
return answer;
}
}
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 3020 - 개똥벌레 [Python(파이썬)] (0) | 2021.07.19 |
---|---|
[백준] 18234 - 당근 훔쳐 먹기 [Python(파이썬)] (0) | 2021.07.19 |
[백준] 11497 - 통나무 건너뛰기 [Python(파이썬)] (2) | 2021.07.02 |
[백준] 2668 - 숫자고르기 [Python(파이썬)] (0) | 2021.06.28 |
[백준] 2660 - 회장 뽑기 [Python(파이썬)] (0) | 2021.06.28 |