티스토리 뷰
문제
프로그래머스 2019 카카오 개발자 겨울 인턴십 - 인형뽑기
풀이
- 바구니에서는 가장 마지막에 들어간 인형이 계속해서 필요하기 때문에 stack으로 구현했다
- checkBasket은 뽑은 인형을 바구니에 넣을때 실행하는 함수이다
- moves 배열에 들어있는 순서대로 인형을 뽑은 후에는 해당 인형이 있던 자리를 0으로 바꿔줘야한다
- 해당 열에서 인형을 뽑았으면 다음 인형은 뽑지 못하게 하도록 break로 반복문을 나가줘야한다
- 터진 인형은 pop으로 사라진 인형 갯수의 2배이므로 count*2를 해야한다
코드
import java.util.Stack;
class Solution {
static Stack<Integer> basket = new Stack<Integer>();
static int count;
static public void checkBasket(int curDoll) {
if(basket.isEmpty()) {
basket.push(curDoll);
} else if(basket.peek() == curDoll) {
basket.pop();
count++;
} else {
basket.push(curDoll);
}
}
public int solution(int[][] board, int[] moves) {
int answer = 0;
for(int i=0; i<moves.length; i++){
int crane = moves[i]-1;
for(int j=0; j<board.length; j++) {
int doll = board[j][crane];
if(doll == 0) continue;
else{
checkBasket(doll);
board[j][crane] = 0;
break;
}
}
}
answer = count*2;
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스 2017 카카오 예선 - 컬러링북 (0) | 2020.04.27 |
---|---|
[Algorithm] 최대공약수&최소공배수 구하기 - 유클리드 호제법 (0) | 2020.04.25 |
[Algorithm] 프로그래머스 2018 카카오 공채 - 비밀지도 (0) | 2020.04.25 |
[Alogorithm] 백준 2178번 미로탐색 - BFS (0) | 2020.04.19 |
[Algorithm] 백준 1260번 - BFS (0) | 2020.04.11 |