[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/64061
[풀이]
주어진 board내 인덱스만 조절해서 풀어도 되지만 column별 큐에 담아 쉽게 맨 위에 있는 인형을 뽑을 수 있도록 했다. 바구니는 맨 위에 있는 인형과 비교해서 터뜨리거나 그냥 넣기 때문에 스택을 이용해서 구현한다.
[코드]
package heap_stack_dequeue;
import java.util.*;
class Pro_level2_64061 {
public int solution(int[][] board, int[] moves) {
int answer = 0;
//크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return
int len = board.length;
List<Queue<Integer>> list = new ArrayList<>();
for(int i=0; i<len; i++){
list.add(new LinkedList<>());
}
for(int i=0; i<len; i++){
for(int j=0; j<len; j++){
if(board[j][i]!=0){
list.get(i).add(board[j][i]);
}
}
}
Stack<Integer> box = new Stack<Integer>();
Queue<Integer> q;
for(int move:moves){
q = list.get(move-1);
if(q.isEmpty()) continue;
int doll = q.poll();
if(!box.isEmpty() && doll==box.peek()){
answer += 2;
box.pop();
}
else{
box.push(doll);
}
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level2 178870 연속된 부분 수열의 합 (c++) - 투포인터 (0) | 2023.04.10 |
---|---|
[pro] 프로그래머스 level2 12902 3*n 타일링 (Java) - dp (0) | 2023.03.25 |
[pro] 프로그래머스 level2 131704 택배 상자 (Java) - 시뮬레이션 (0) | 2023.03.07 |
[pro] 프로그래머스 level2 131127 할인 행사 (Java) - 시뮬레이션 (0) | 2023.03.06 |
[pro] 프로그래머스 level2 134239 우박수열 정적분 (Java) - 시뮬레이션 (0) | 2023.03.04 |