1. 문제
https://programmers.co.kr/learn/courses/30/lessons/64061
2. 접근방법
시키는 대로 인형을 뽑고 바구니에 담은 뒤 같은 인형 2개가 붙어있으면 폭발,
시키는 대로 다 뽑은 뒤 폭발한 인형 갯수 출력하는 문제
1. 인형을 뽑는 것은 각 라인에서 0이 아닌 숫자를 찾을 때까지 찾아가서 뽑는다.
(극한까지 효율을 뽑는다고 생각하면 각 라인의 인형 갯수를 미리 배열하나에 저장 해놓을 수도 있을 것 같다)
2. 인형을 담는 바구니는 하나씩 쌓이는 형태이기 때문에 Stack을 활용하였다.
이전에 담긴 인형이 현재 담을 인형과 같으면 같이 사라지는 형태이기 때문에
현재 인형을 담기전 이전 인형을 먼저 확인하고(peek) 같으면
이전인형 pop 다르면 현재인형 push 하는 형태로 구현
3. 최종 사라진 인형의 갯수 출력
3. 자바 코드
import java.util.Stack;
public class 크레인인형뽑기 {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> basket = new Stack<Integer>();
basket.push(-1);
for(int col : moves) { //뽑는 위치
int num = get(board,col-1);
if(num == 0)
continue;
if(basket.peek() == num) {
basket.pop();
answer+=2;
}else
basket.push(num);
}
return answer;
}
static int get(int[][] board, int col) {
int num = 0;
for(int i = 0 ; i < board.length; i++)
if(board[i][col] != 0) {
num = board[i][col];
board[i][col]=0;
break;
}
return num;
}
}
4. 마치며
간단한 시뮬레이션 문제.
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 67257 수식 최대화 (2020 카카오 인턴십) (0) | 2021.06.28 |
---|---|
[프로그래머스] 67259 경주로 건설 (2020 카카오 인턴십) (0) | 2021.06.28 |
[프로그래머스] 67260 동굴 탐험 (2020 카카오 인턴십) (1) | 2021.06.28 |
[프로그래머스] 64064 불량 사용자 (0) | 2021.06.22 |
[프로그래머스] 64065 튜플 (0) | 2021.06.22 |