문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/64061



제한 사항

입출력 예

풀이
import java.util.Stack;
import java.util.ArrayList;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
ArrayList<Stack> stackList = new ArrayList<>();
Stack result = new Stack();
for (int i = 0; i < board.length; i++) {
stackList.add(new Stack());
for (int j = board.length - 1; j >= 0; j--)
if (board[j][i] != 0) {
stackList.get(i).push(board[j][i]);
}
}
for (int move : moves) {
if (stackList.get(move - 1).size() != 0) {
if (result.size() == 0) {
result.push(stackList.get(move - 1).pop());
}
else {
if (result.peek() == stackList.get(move - 1).peek()) {
stackList.get(move - 1).pop();
result.pop();
answer += 2;
}
else result.push(stackList.get(move - 1).pop());
}
}
}
return answer;
}
}
후기
중간에 조금 헷갈려서 약간 헤맸다. 스택만 잘 사용하면 무난하게 풀 수 있는 문제
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 로또의 최고 순위와 최저 순위 (0) | 2023.07.11 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 약수의 개수와 덧셈 (0) | 2023.07.11 |
| [프로그래머스][JAVA][Lv. 1] 부족한 금액 계산하기 (0) | 2023.07.10 |
| [프로그래머스][JAVA][Lv. 1] 없는 숫자 더하기 (0) | 2023.07.10 |
| [프로그래머스][JAVA][Lv. 1] 숫자 문자열과 영단어 (0) | 2023.07.09 |