반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 플러터
- Java
- linebreak
- dfs
- 플러터 동작
- Render object tree
- 완전탐색
- element tree
- 프로그래머스
- Android
- 자바
- dart
- Lazy
- 초기화
- flutter
- 코틀린
- 알고리즘
- 에러
- 거리알고리즘
- 자료구조
- Event Loop
- 앱아이콘 변경
- Kotlin
- 재귀
- IOS
- zwj
- 비동기 처리
- microtask queue
- 싱글톤
- Singleton
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
자바(JAVA) - 크레인 인형뽑기 게임(Programmers : 64061) 본문
반응형
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
인형뽑기에서 뽑은 인형들을 바구니에 담았을 때, 마지막 담았던 인형이 방금 집어 넣은 인형과 같을 경우 터지게 되며,
터진 인형의 개수를 return하는 아주 간단한 문제. LIFO 자료구조, Stack을 이용하면 쉽게 풀 수 있다.
라고 생각하고 Submit 했지만, 몇몇 상황에 대한 예외처리가 필요했다.
실행 순서는 다음과 같다 :
1. 크레인을 내릴 위치가 담긴 moves 배열의 값을 Column값으로, 가장 위에 위치한 인형 확인
2. 인형이 위치했던 자리의 배열값 0으로 수정 & 아래 조건 확인
* Stack이 empty일 경우 무조건 Push > Empty 상태에서 Peek() 시 발생하는 EmptyStackException에 대한 예외처리
* Stack의 맨 마지막 값과 방금 꺼낸 인형이 같을 경우
> Return 값 2씩 증가 인형을 터뜨린 뒤에 연속되는 인형들에 대한 처리를 위해 While문에 위치해야 함
* 위 2개 조건 외에는 그냥 Stack에 인형 push
<코드>
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int N = board.length;
int answer = 0;
Stack<Integer> basket = new Stack<Integer>();
for(int n : moves) {
for(int i = 0; i < N; i++) {
int top = board[i][n-1];
// 맨 위에 위치한 인형 확인됐을 경우
if(top != 0) {
// 꺼낸 인형 자리 0 표시
board[i][n-1] = 0;
// Basket이 0
if(basket.peek() == top) {
while(!basket.isEmpty() && basket.peek() == top) {
answer += 2;
top = basket.pop();
}
} else {
basket.push(top);
}
break;
}
}
}
return answer;
}
}
반응형
'Java > Java.algorithm' 카테고리의 다른 글
자바(JAVA) - 소수 찾기(Programmers : 42839) (0) | 2021.06.10 |
---|---|
자바(JAVA) - 땅따먹기(Programmers : 12913) (0) | 2021.06.10 |
자바(JAVA) - 타겟 넘버(Programmers : 43165) (0) | 2021.06.10 |
자바(JAVA) - 모두 0으로 만들기(Programmers : 76503) (0) | 2021.06.10 |
자바(JAVA) - 게임 맵 최단거리(Programmers : 1844) (0) | 2021.06.10 |
Comments