Algorithm & SQL/Programmers
[Programmers / Java] 크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴십 코테)
김룹
2024. 3. 9. 17:38
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < moves.length; i++) {
for(int j = 0; j < board.length; j++) {
if(board[j][moves[i] - 1] > 0) { // 인형이 있을 경우에 뽑기 진행
// 스택에 인형이 있고, 현재 뽑은 인형이랑 동일할 경우 터트리기
// 아니라면 스택에 인형 넣기
if(!stack.isEmpty() && board[j][moves[i] - 1] == stack.peek()) {
answer += 2;
stack.pop();
} else {
stack.add(board[j][moves[i] - 1]);
}
// 인형을 뽑은 자리에 0으로 초기화
board[j][moves[i] - 1] = 0;
break;
}
}
}
return answer;
}
}
느낀 점 및 정리 ✍️
1. 스택을 사용하여 뽑은 인형들을 스택에 넣고, 인형을 뽑을 때마다 스택의 가장 최상단의 인형과 일치하는지 확인, 일치한다면 인형 터트리기(answer += 2), stack.pop()
2. 아니라면 스택에 인형 넣는다
3. moves[i] - 1 을 한 이유는, 배열의 인덱스는 0부터 시작인데 크레인의 입력 값은 1부터 시작이기 때문에 크레인의 값에서 -1을 해주어야 인덱스가 맞는다