반응형
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
- 에러
- 프로그래머스
- 자바
- 자료구조
- 거리알고리즘
- Lazy
- 프리즈드
- 완전탐색
- 재귀
- 코틀린
- linebreak
- Java
- dfs
- zwj
- 앱아이콘 변경
- Widget Tree
- Render object tree
- Android
- Singleton
- element tree
- 플러터
- Kotlin
- 알고리즘
- flutter
- 초기화
- 싱글톤
- dart
- 비동기 처리
- IOS
- 플러터 동작
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
자바(JAVA) - 크레인 인형뽑기 게임(Programmers : 64061) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/64061#
인형뽑기에서 뽑은 인형들을 바구니에 담았을 때, 마지막 담았던 인형이 방금 집어 넣은 인형과 같을 경우 터지게 되며,
터진 인형의 개수를 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