-
[프로그래머스 Lv.1] 크레인 인형뽑기 javaDEV/알고리즘 2020. 11. 10. 16:52
문제설명
programmers.co.kr/learn/courses/30/lessons/64061
제한사항
- 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
123456789101112131415161718192021222324import 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 으로 칸에 있는 인형을 바구니에 넣었거나 사라졌으므로 초기화시켜준다.
'DEV > 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.1] 예산 java (0) 2020.11.24 [프로그래머스 Lv.1] 키패드 누르기 java (0) 2020.11.19 [프로그래머스 Lv.2] 카펫 java (0) 2020.11.03 [프로그래머스 Lv.1] 3진법 뒤집기 java (0) 2020.10.20 [프로그래머스 Lv.2] H-Index java (0) 2020.10.18