[프로그래머스] 크레인 인형뽑기 게임 자바(Java)
본문 바로가기
알고리즘 풀이

[프로그래머스] 크레인 인형뽑기 게임 자바(Java)

by IYK2h 2023. 3. 27.
728x90

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

 

프로그래머스

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

programmers.co.kr

 

풀이

  1. 2차원 배열을 스텍으로 변경
  2. moves의 값에 따라 스텍에서 pop
  3. 쌓아둔 바구니 마지막 값과 비교
    사실 1번 과정을 꼭 필요하진 않다.

코드

import java.util.Stack;

class Solution {

    public int solution(int[][] board, int[] moves) {
        int answer = 0;

        Stack[] stacks = new Stack[board[0].length];
        Stack<Integer> box = new Stack<>();

        // 스텍으로 변경
        for (int j = board.length - 1; j >= 0; j--) {
            stacks[j] = new Stack();
            for (int i = board[0].length - 1; i >= 0; i--) {
                if (board[i][j] != 0) {
                    stacks[j].add(board[i][j]);
                }
            }
        }

        for (int i : moves) {
            if (!stacks[i - 1].isEmpty()) {
                // 비어있지않고, 맨 위 값이 같은 경우
                if (!box.isEmpty() && box.peek() == stacks[i - 1].peek()) {
                    box.pop();
                    stacks[i - 1].pop();
                    answer += 2;
                }
                // 쌓기
                else {
                    box.add((Integer) stacks[i - 1].pop());
                }
            }
        }

        return answer;
    }
}
728x90

댓글