[프로그래머스 - JAVA] 크레인 인영뽑기
2023. 11. 15. 23:12ㆍAlgorithm
문제 설명
게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다.
"죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다.
게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구니에 담은 모습입니다.
정답
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stk = new Stack<>();
for (int move : moves) {
for (int i=0; i<board.length; i++) {
if (board[i][move - 1] != 0) {
int last_num = 0;
if (!stk.isEmpty()) {
last_num = stk.peek();
}
stk.add(board[i][move - 1]);
board[i][move - 1] = 0;
if (last_num == stk.peek()) {
stk.pop();
stk.pop();
answer += 2;
}
break; // 찾으면 끝내야함
}
}
}
return answer;
}
}
이 문제는 보자마자 그냥 스택 이용해서 풀어야겠다는 생각이 들었다 내부 구현 중 결과 찍는 과정에서 값을 하나 실수해서 자꾸 이상한 결과가 나와서 그거 해결하는데 오래 걸리긴 했지만 스택 구조만 잘안다면 어렵지 않은 문제인거 같다.
'Algorithm' 카테고리의 다른 글
[프로그래머스 - JAVA] K번째수 (0) | 2023.11.17 |
---|---|
[프로그래머스 - JAVA] 모의고사 (0) | 2023.11.17 |
[프로그래머스 - JAVA] 신규 아이디 추천 (0) | 2023.11.12 |
[프로그래머스 - JAVA] 로또의 최고 순위와 최저 순위 (0) | 2023.11.09 |
[프로그래머스 - JAVA] 성격 유형 검사하기 (0) | 2023.11.04 |