코딩테스트(Java)/프로그래머스 1단계

[프로그래머스] 크레인 인형뽑기 게임 - JAVA

영드로이드개발자 2024. 2. 28. 12:56
반응형

문제

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

 

프로그래머스

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

programmers.co.kr

입출력

이 문제는 2019 카카오 겨울 개발자 인터십 문제로 프로그래머스 1단계 문제이다.

딱 봐도 stack 을 이용하여 문제를 푸는 기본 문제라고 볼 수 있는데 문제의 조건만 잘 파악하면 굉장히 쉽게 문제를 해결할 수 있는 문제이다.

더 좋은 아이디어나 방법이 있으면 공유바란다.

 

import java.util.*;


class Solution {

    public static void main(String[] args) {
        int[][] board = {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 3},
                {0, 2, 5, 0, 1},
                {4, 2, 4, 4, 2},
                {3, 5, 1, 3, 1}
        };

        int[] moves = {1,5,3,5,1,2,1,4};
        System.out.println(solution(board, moves));
    }


    static public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();

        for (int move : moves) {
            for (int j = 0; j < board.length; j++) {
                if (board[j][move - 1] != 0) {
                    if (!stack.isEmpty() && stack.peek() == board[j][move - 1]) {
                        stack.pop();
                        answer += 2;
                    } else {
                        stack.add(board[j][move - 1]);
                    }
                    board[j][move - 1] = 0;
                    break;
                }
            }
        }

        return answer;
    }
}

느낀점

해당 문제 같은 경우는 stack을 활용하는 기본문제 수준이라고 생각이 된다. 어렵지 않게 해결이 가능한 문제였다.

반응형