알고리즘
[java] 프로그래머스 크레인 인형뽑기
_DAMI
2023. 8. 9. 18:23
https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int cnt = 0;
int row= board.length;
int col= board[0].length;
Stack<Integer> st = new Stack<>();
for(int i=0; i<moves.length; i++){
for(int j=0; j<col; j++){
int target = board[j][moves[i]-1];
if(target>0){
if(st.size()>0 && st.peek()==target){
st.pop();
board[j][moves[i]-1]=0;
cnt += 2;
break;
}else{
st.add(target);
board[j][moves[i]-1]=0;
break;
}
}
}
}
return cnt;
}
}
주의할점
1. 2차원배열의 행과 열
2. 배열은 0,0 ~ 시작하니까 board에서 젤 위에 값을 구할 때는 for문은 i=0부터 시작하면 된다.
3.stack은 LIFO 나중에 들어온 것이 먼저 나간다. Queue는 FIFO
4.공통적인 사항은 IF문에서 빼도 될듯