728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64061
풀이
- 2차원 배열을 스텍으로 변경
- moves의 값에 따라 스텍에서 pop
- 쌓아둔 바구니 마지막 값과 비교
사실 1번 과정을 꼭 필요하진 않다.
코드
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack[] stacks = new Stack[board[0].length];
Stack<Integer> box = new Stack<>();
// 스텍으로 변경
for (int j = board.length - 1; j >= 0; j--) {
stacks[j] = new Stack();
for (int i = board[0].length - 1; i >= 0; i--) {
if (board[i][j] != 0) {
stacks[j].add(board[i][j]);
}
}
}
for (int i : moves) {
if (!stacks[i - 1].isEmpty()) {
// 비어있지않고, 맨 위 값이 같은 경우
if (!box.isEmpty() && box.peek() == stacks[i - 1].peek()) {
box.pop();
stacks[i - 1].pop();
answer += 2;
}
// 쌓기
else {
box.add((Integer) stacks[i - 1].pop());
}
}
}
return answer;
}
}
728x90
'알고리즘 풀이' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 자바(Java) (0) | 2023.03.28 |
---|---|
[프로그래머스] 공원 산책 자바(Java) (0) | 2023.03.28 |
[프로그래머스] 바탕화면 정리 자바(Java) (0) | 2023.03.26 |
[프로그래머스] 대충 만든 자판 자바(Java) (0) | 2023.03.25 |
[프로그래머스] 덧칠하기 자바(Java) (0) | 2023.03.24 |
댓글