개발/알고리즘

Programmers - 크레인 인형뽑기 게임

devNam 2021. 9. 9. 23:40
반응형
 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[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]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> answerStack = new Stack<>();
        for(int i = 0; i < moves.length; i++) {
            for(int k = 0 ; k < board.length; k++) {
                int num = moves[i]-1;
                // 숫자가 0이 아닌지 판별
                if(board[k][num] != 0) {
                    // answerStack 크기가 0일 경우 peek() 에러 발생
                    // answerStack Last 숫자와 같을 경우 answerStack Last 숫자 Out
                    if(!answerStack.isEmpty() && answerStack.peek() == board[k][num]) {
                        answerStack.pop();
                        answer += 2;
                    } else {
                        // 위 두 조건을 만족하지 않을 시 push
                        answerStack.push(board[k][num]);
                    }
                    // pop/push 여부와 상관 없이 0이 아닐 경우 숫자 0으로 초기화
                    board[k][num] = 0;
                    break;
                }
            }
        }
        
        return answer;
    }
}

 

소감

사실 이 문제는 이중 배열만 보고 어렵겠구나싶어 계속 안 풀고 있었다

남들이 보기에는 에게? 저 문제를 안 풀려했었다고? 이럴 수 있다

도전하고 못 풀었을 때 상실감이 너무 크기에 도전이 꺼려지기는 한다

그렇지만 풀어보고 시도했기에 내가 부족한 부분을 알고 채울 수 있었고 문제를 해결할 수 있었다

다음에도 어려워 보이는 문제가 있더라도 풀어보려고 시도는 계속하려한다

 

부족한 실력이기에 다른 분들보다 더 효율적으로 코드를 작성하지 못하더라도 봐주시는 분들께 감사하다

반응형