DEV/알고리즘
[프로그래머스 Lv.1] 크레인 인형뽑기 java
Imvory
2020. 11. 10. 16:52
문제설명
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
제한사항
- board 배열은 2차원 배열로 크기는 5 x 5 이상 30 x 30 이하입니다.
- board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다.
- 0은 빈 칸을 나타냅니다.
- 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모양의 인형을 나타냅니다.
- moves 배열의 크기는 1 이상 1,000 이하입니다.
- moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.
입출력 예
board | moves | result |
[[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 |
Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(int move : moves) {
for(int i=0; i<board.length; i++) {
if(board[i][move-1]!=0) {
if(!stack.empty() && stack.peek()==board[i][move-1]) {
stack.pop();
answer+=2;
}else {
stack.push(board[i][move-1]);
}
board[i][move-1] = 0;
break;
}
}
}
return answer;
}
}
|
cs |
문제풀이 순서
- 인형을 담아줄 스택 생성
- 크레인이 작동한만큼 반복문 돌리기
- 2차원배열의 y축만 검사해야하기때문에 x축은 고정시키고 반복문을 돌려준다.
- 바구니에 있는 인형과 칸에 인형을 비교하여 같다면 인형을 없애주고 같지않다면 바구니에 인형을 넣어준다.
- 인형이 터질땐 2개가 없어지므로 +2
- board[i][move-1] = 0 으로 칸에 있는 인형을 바구니에 넣었거나 사라졌으므로 초기화시켜준다.