-
크레인 인형뽑기 게임알고리즘/프로그래머스 2020. 11. 1. 23:57
문제 : https://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
1) 문제 풀이
- 배열을 돌며 move에 해당하는 데이터를 찾는다.
- 0이 아닌 값이 나오는 경우(인형) 인형을 담고 있는 바구니의 맨 첫번째 값(바구니 인형)을 확인한다.
- 바구니의 인형이 배열에서 꺼낸 인형과 같은 경우 count를 증가시킨다.
- 다른 경우 바구니에 해당 인형을 집어넣는다
- 조사한 배열의 인형은 0으로 초기화 시킨다.
- 인형은 2개씩 없어지므로 count*2를 리턴하여 답을 획득한다.
2) 구현 코드
import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack<Integer> basket = new Stack<Integer>(); for(int move : moves) { for(int i=0; i<board.length; i++) { if(board[i][move-1] != 0) { if(basket.isEmpty()) { basket.add(board[i][move-1]); }else { if(basket.peek() == board[i][move-1]) { basket.pop(); answer ++; }else { basket.add(board[i][move-1]); } } board[i][move-1] = 0; break; } } } return answer*2; } }
peek()는 stack에서 첫번째 값 확인, pop()은 스택에서 데이터 삭제.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
두개 뽑아서 더하기 (0) 2020.11.19 가장 큰 수 (0) 2020.11.02 나누어 떨어지는 숫자 배열 (0) 2020.11.01 이상한 문자 만들기 (0) 2020.11.01 가운데 글자 가져오기 (0) 2020.11.01