접근 방법
- 문제에서 구현하라는 대로 하면 된다.
- 인형이 터지는지 판단하는 부분에서는 스택/리스트의 가장 마지막 원소만 비교해주면 된다.
소스 코드 - ArrayList 사용
import java.util.ArrayList;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int n = board.length;
int m = moves.length;
ArrayList<Integer> basket = new ArrayList<>();
basket.add(0);
for (int i = 0; i < m; i++) {
int col = moves[i];
int row = 0;
while (row < n && board[row][col - 1] == 0) {
row += 1;
}
if (row < n) {
basket.add(board[row][col - 1]);
board[row][col - 1] = 0;
int idx = basket.size()-1;
if (basket.get(idx) == basket.get(idx - 1)) {
answer += 2;
basket.remove(idx);
basket.remove(idx - 1);
}
}
}
return answer;
}
}
소스 코드 - Stack 사용
import java.util.Stack;
class Solution {
public static int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
stack.push(0);
for (int move : moves) {
for (int j = 0; j < board.length; j++) {
if (board[j][move - 1] != 0) {
if (board[j][move - 1] == stack.peek()) {
stack.pop();
answer += 2;
} else {
stack.push(board[j][move - 1]);
}
board[j][move - 1] = 0;
break;
}
}
}
return answer;
}
}
출처
https://programmers.co.kr/learn/courses/30/lessons/64061
'Algorithm' 카테고리의 다른 글
Programmers Level1. 신규 아이디 추천 (java) (0) | 2021.04.21 |
---|---|
Baekjoon #1966 프린터큐 (java) (0) | 2021.04.14 |
Baekjoon #13549 숨바꼭질3 (java, 다익스트라, 우선순위큐) (0) | 2021.04.13 |
Baekjoon #9019 DSLR (java) (0) | 2021.04.11 |
Baekjoon #2146 다리만들기 (java) (0) | 2021.04.10 |