반응형
이 문제는 https://programmers.co.kr/learn/courses/30/lessons/64061 이곳에서 확인할 수 있다.
import java.util.Stack;
public static int solution(int[][] board, int[] moves) {
int result = 0;
Stack<Integer> s = new Stack<>();
for(int i : moves){
for(int j = 0; j < board.length; j++){
if(board[j][i - 1] != 0){
if(!s.isEmpty() && s.peek() == board[j][i-1]){
s.pop();
result += 2;
}else {
s.add(board[j][i - 1]);
}
board[j][i-1] = 0;
break;
}
}
}
return result;
이 문제에서는 스택을 사용하였다.
일단 인덱스가 터지지 않게 for each문을 사용해 i를 moves로 돌린다.
그다음 for문에서 board의 길이만큼 j를 돌리며 만약 board [ j ][ i-1 ]이 0이 아니고 비어있지 않으며 지금 가지고 있는 값과 전에 들어온 값이 같다면 스택 값을 pop 해주고 result를 +2 해준다. 만약 아니라면 그 값을 스택에 추가해 준다.
그리고 그 board의 값은 이미 바구니에 넣어주었기 때문에 0으로 바꾸어준다.
반응형
'알고리즘 > 프로그래머스 풀이' 카테고리의 다른 글
[JAVA] 프로그래머스 - 제일 작은 수 제거하기 (0) | 2021.11.10 |
---|---|
[JAVA] 프로그래머스 풀이 - 예산 (0) | 2021.11.09 |
[JAVA] 프로그래머스 2016년 (0) | 2021.11.08 |
[JAVA] 소수 찾기 - 에라토스테네스의 체 (1) | 2021.10.20 |
[JAVA] 프로그래머스 2018 KAKAO BLIND RECRUITMENT 1차 비밀지도 풀이 (0) | 2021.10.01 |