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 |