728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/64061?language=java
풀이
레벨 1 문제라 쉽게 풀었음
board[][]를 ArrayList랑 Stack으로 구현해도 될 것 같긴한데 그냥 배열로 해주는게 오히려 더 간편한 듯?
바구니는 쉽게 Stack을 사용했음!
코드보면 쉽게 이해할 수 있을거임 ㅎㅎ
ㄱㄱ
코드
// 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임
// https://programmers.co.kr/learn/courses/30/lessons/64061?language=java
package PROGRAMMERS.level1;
import java.util.Stack;
public class Num64061_크레인인형뽑기게임 {
private static class Solution{
public int solution(int[][] board, int[] moves) {
int answer = 0;
int N = board.length;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < moves.length; i++) {
int move = moves[i] - 1;
int temp = -1;
for (int j = 0; j < N; j++) {
// 가장 위에 있는 인형이 몇번인지 확인하는 작업
if (board[j][move] != 0) {
temp = board[j][move];
board[j][move] = 0;
break; // 인형이 있으면 탈출, 없으면 temp는 그대로 -1
}
}
if (temp > 0) { // temp가 양수면 인형이 있었다는 뜻
if (stack.isEmpty()) { // 바구니가 비었으면 일단 인형 추가
stack.push(temp);
} else { // 바구니가 비어있지 않으면
if (stack.peek() == temp) { // 바구니 맨 위의 인형이 현재 뽑은 인형과 같으면
stack.pop(); // 바구니 맨 위의 인형을 없애주고
answer += 2; // 정답 += 2
} else { // 바구니 맨 위의 인형이 현재 뽑은 인형과 다르면
stack.push(temp); // 바구니에 인형 추가
}
}
}
temp = -1; // temp 초기화
}
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(new int[][]{{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}}, new int[]{1, 5, 3, 5, 1, 2, 1, 4}));
}
}
}
728x90