코진남
프로그래머스 크레인 문제 본문
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(int move : moves) {
for(int i = 0 ; i < board.length; i++) {
if(board[i][move - 1] != 0) {
if(stack.isEmpty()) {
stack.push(board[i][move - 1]);
board[i][move - 1] = 0;
break;
}
if(board[i][move - 1] == stack.peek()) {
stack.pop();
answer+=2;
}else
stack.push(board[i][move-1]);
board[i][move - 1] = 0;
break;
}
}
}
return answer;
}
}
1. moves 를 (열) 이라고 생각하자.
2. Stack.isEmpty() 를 조건문으로 사용한 이유는 가장 처음에는 아무 값이 없을테니
값 하나를 처음에 넣어주고 해당 for문을 빠져나오도록, break 해준다. (스택에 쌓인 이전 값과 비교를 해야하기 때문에 값이 1개 이상 필수 ) 스택이 비어있을 때 값을 하나 이상되도록 넣어주고 빠져나온다.
3. 나머지 코드들은 보면 이해가능 할것.
'코딩테스트' 카테고리의 다른 글
프로그래머스 체육복 (0) | 2022.03.30 |
---|---|
프로그래머스 신고! (0) | 2022.03.26 |
프로그래머스 완주하지 못한 선수 (0) | 2022.03.26 |
프로그래머스 키패드 문제 (0) | 2022.03.23 |
프로그래머스 숫자 문자열과 영단어 (0) | 2022.03.22 |