알고리즘
[프로그래머스] 크레인 인형뽑기 게임(카카오)
winwin-k9
2024. 4. 4. 19:44
문제
사진의 길이로 인해 링크 첨부
https://school.programmers.co.kr/learn/courses/30/lessons/64061
풀이
주어진 맵 이차원 배열에 대해서 스택과 조합하면 어렵지 않게 풀 수 있다.
주의할점은 이차원 배열을 가로가 아닌 세로로 탐색해야 한다.
세로로 탐색해서 제일 위에 위치한 인형을 뽑아 Stack에 저장 하는데,
이대 peek을 이용하여 제일 위에 있는 인형의 번호를 확인하여
일치 여부에 따라 push를 할 지 pop을 할 지 결정하도록 한다.
import java.util.*;
import java.lang.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int N = moves.length;
int top = 0;
Stack<Integer> stack = new Stack<>();
for(int move : moves) {
if (!stack.isEmpty()) {
top = stack.peek();
}
int doll = getCrane(move, board);
if (doll != 0 && top == doll) {
answer += 2;
stack.pop();
continue;
}
stack.push(doll);
}
return answer;
}
static int getCrane(int move, int[][] board) {
for(int i = 0; i < board.length; i++) {
int num = board[i][move - 1];
if (num != 0) {
board[i][move - 1] = 0;
return num;
}
}
return 0;
}
}
728x90