본문 바로가기

Programmers/Level1

크레인 인형뽑기 게임

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
39
40
41
42
43
44
45
46
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        
        int[] tops = new int[board.length], stack = new int[moves.length];;
        int i, j, top = -1, pos = 0;
        boolean flag = true;
 
        // top 정의
        for (i = 0; i < board.length; i++) {
            for (j = 0; j < board.length; j++)
                if (board[j][i] != 0) {
                    tops[i] = j;
                    break;
                }
        }
        // stack에 쌓기
        for (i = 0; i < moves.length; i++){
            if (tops[moves[i] - 1> board.length-1)
                continue;
            else
                stack[++top] = board[tops[moves[i] - 1]++][moves[i] - 1];
       }
        while (flag) {
            flag = false;
            for (i = 0; i < stack.length - 1; i++) {
                if(stack[i+1== 0) {
                    flag = false;
                    break;
                }
                    
                if(stack[i] != -1)
                    pos = i;
            
                if (stack[pos] == stack[i + 1&& stack[pos] != -1) {
                    answer += 2;
                    stack[pos] = stack[i + 1= -1;
                    flag=true;
                    break;
                }
            }
 
        }
        return answer;
    }
}
cs

자바 자료구조 중에 기본적으로 stack과 list를 제공해준다.

이를 이용하면 더 간단하게 풀 수 있다.

 

각 board 마다의 꼭대기를 설정해주고, 이를 이용하여 stack을 쌓아준다.

-1을 건너뛰면서 같은 수가 연속으로 나올 경우 answer를 더해준다.

'Programmers > Level1' 카테고리의 다른 글

예산  (0) 2021.06.29
소수 찾기  (0) 2021.06.29
[카카오 인턴] 키패드 누르기  (0) 2021.06.29
약수의 개수와 덧셈  (0) 2021.06.29
신규 아이디 추천  (0) 2021.06.29