카카오 크레인 인형뽑기(stack)

Seungmin Lim·2022년 2월 11일
0

코딩문제연습

목록 보기
41/63

문제

카카오 크레인 인형뽑기

나의풀이

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> bsk = new Stack<>();
        for(int pos : moves){
            for(int i=0; i<board.length;i++){
                if(board[i][pos-1] != 0){
                    int tmp = board[i][pos-1];
                    board[i][pos-1] = 0;
                    if(!(bsk.isEmpty()) && bsk.peek() == tmp){
                        answer+=2;
                        bsk.pop();
                    }
                    else bsk.push(tmp);
                    break;
                }
            }
        }
        return answer;
    }
}

풀이방법

현재 위치(pos)와 i로 2중 for문을 돌면서
만약 현재값이 0을 만나면 더 밑으로 내려가고,
0 이외의 수를 만나면, 현재 바구니의 맨 윗값과 비교해 같다면 맨 윗값을 pop, 다르다면 그냥 바구니에 넣었다.

크레인에서 뽑히게 되면 현재값을 0으로 바꿔준다.

tmp에 현재값을 저장하는법을 쓰지않아서 애를 먹었다..

핵심키워드

peek()를 통해 stack의 가장 위의 값을 확인할수있다.
인형의 값을 찾고 바구니에 넣거나, pop을 했으면 break를 걸어줘야 다음 moves로 이동한다.

0개의 댓글