본문 바로가기
개발/코딩테스트

2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 [JAVA]

by 로또 2023. 3. 16.

https://school.programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

* 코드

import java.util.Stack;
import java.util.Arrays;
class Solution {
    public int solution(int[][] board, int[] moves) {
        Stack <Integer> bucket = new Stack<>();
        bucket.add(0);
        
        int answer = 0;
        
        for (int i = 0; i<moves.length; i++){
            int move = moves[i]; // 뽑으려는 번호
            for (int j=0; j<board.length;j++){
                if (board[j][move-1]==0) continue; // 아무것도 없는 경우 아래로 내려감
                if (bucket.peek()==board[j][move-1]) {
                    bucket.pop(); // 같은 인형 들어있으면 인형 터트리기
                    answer+=2; // 인형 두개 사라짐
                }
                else {
                    bucket.add(board[j][move-1]); // 아니면 바구니에 추가
                }
                board[j][move-1] = 0; // 보드에서 삭제
                break; 
            }
        }
        return answer;
    }
}

* 풀이

스택을 이용한 문제이다.

1. 주어진 board 배열에서 moves 열의 인형을 찾는다.

2. 만약 기존 바구니 스택의 제일 윗부분에 있던 인형(peek)과 push할 인형이 같다면 pop() 시켜서 두 인형을 없애고, 다를 경우 바구니 스택에 push한다.

3. 바구니에 넣은 인형은 보드에서 삭제한다.

댓글