알고리즘/시뮬레이션

[프로그래머스]카카오인턴십_크레딧인형뽑기

안잡아모찌 2021. 4. 20. 22:11

programmers.co.kr/learn/courses/30/lessons/64061

 

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

[[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

 

시뮬레이션 적인 문제

인형뽑기 + Stack에 대한 활용 ( 예외처리에 대한 부분 value가 0 일때 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Stack;
 
class Solution {
    public int pullup(int row,int N,int map[][]){
        //row번째 열에서 어떤 인형을 뽑는지 (0나오면 안뽑힌거)
        int result = 0;
        for(int i=0; i<N; i++){
            if(map[i][row] != 0 ){
                result = map[i][row];
                map[i][row] = 0 ;
                break;
            }
        }
        return result;
    }
    
    public int solution(int[][] board, int[] moves) {
        Stack<Integer> st = new Stack();
        int answer = 0;
        int N = board.length;
        for(int i=0;i<moves.length;i++){
            int value = pullup(moves[i]-1,N,board);
            if(value == 0 ) continue;
            if(!st.isEmpty()){
                int top = st.peek();
                if(top == value){
                    //같은게 2개있으면
                    answer += 2;
                    st.pop();
                }else{
                    st.push(value);
                }
            }else{st.add(value);}
            
        }        
        return answer;
    }
}
cs