프로그래머스: 크레인 인형뽑기 게임
https://programmers.co.kr/learn/courses/30/lessons/64061
소스
1 | public int solution(int[][] board, int[] moves) { |
흐름
인형이 쌓여있는 상자에서 각 열마다 맨 위에 있는 인형의 위치를 배열에 저장함.
크레인이 뽑을 위치가 담긴 배열 크기(moves) 만큼 loop 돔.
배열이 0부터 시작하므로, 뽑을 위치(move) 에서 -1 함.
뽑을 위치에서 맨 위의 위치를 가져오는데 0이면 그 열에 있는 건 모두 뽑아 먹은 것이므로 아무 행동도 하지 않음.
총 높이에서 그 열에서 제일 위에 있는 인형의 위치를 뻄.
상자에서 인형을 꺼냄.(value = board[height][move])
그 열에 한 개 꺼냈으므로, top의 위치를 한 칸 내림.
stack이 비어 있지 않으면서, stack의 top이 현재 뽑은 인형과 같으면 stack에 저장된 인형을 삭제하고, 삭제된 인형의 갯수를 더 함.
그렇지 않으면 stack에 인형을 추가.
끝
결과
번호 | 속도 |
---|---|
테스트 1 | 통과 (0.94ms, 50.1MB) |
테스트 2 | 통과 (0.94ms, 52.4MB) |
테스트 3 | 통과 (1.04ms, 52.6MB) |
테스트 4 | 통과 (2.28ms, 50.6MB) |
테스트 5 | 통과 (0.98ms, 50.9MB) |
테스트 6 | 통과 (0.97ms, 50.6MB) |
테스트 7 | 통과 (1.11ms, 52.4MB) |
테스트 8 | 통과 (1.25ms, 52.1MB) |
테스트 9 | 통과 (1.37ms, 54.4MB) |
테스트 10 | 통과 (1.38ms, 52.5MB) |
테스트 11 | 통과 (1.81ms, 52.7MB) |