문제풀이
가까운 인형을 없애는 문제이므로 stack 을 이용해 문제를 해결한다.
import java.util.Deque;
import java.util.ArrayDeque;
class Solution {
public int solution(int[][] board, int[] moves) {
// board : 인형 담긴 상태
// moves : 크레인을 작동 시킨 위치
// 사라진 인형의 개수 반환
int answer=0;
Deque<Integer> stack=new ArrayDeque<>();
// 크래인 작동 횟수 반복
for(int i=0;i<moves.length;i++){
// 작동 위치 (1부터 시작하므로 1을 뺀 index구함)
int moveIndex=moves[i]-1; // = board의 column index
// 해당 moveIndex에서 board의 행 크기만큼 반복
// 상단 부터 탐색
for(int j=0;j<board.length;j++){
// 인형
int doll=board[j][moveIndex];
if(doll==0) continue; // 0은 인형이 없는 것
else{ // 인형이 잡혔다면
// 잡혔으므로 0으로 설정
board[j][moveIndex]=0;
// stack에 있는 것과 같으면 인형 터트리기
if(!stack.isEmpty()&&stack.peek()==doll){
stack.pop();
answer+=2;
}else{
// 없으면 담기
stack.push(doll);
}
break;
}
}
}
return answer;
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #42587 : 프로세스 - JAVA (1) | 2025.04.05 |
---|---|
[ 프로그래머스 ] #42583 : 다리를 지나는 트럭 - JAVA (1) | 2025.04.03 |
[ 프로그래머스 ] #76502 : 괄호 회전하기 - JAVA (1) | 2025.03.31 |
[ etc ] #9 : 10진수를 2진수로 변환하기 - JAVA (0) | 2025.03.23 |
[ 프로그래머스 ] #42584 : 주식가격 - JAVA (1) | 2025.02.05 |