코테/프로그래머스
프로그래머스 크레인 인형뽑기 게임
65살까지 코딩
2022. 1. 17. 01:17
728x90
반응형
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
//스스로 풀고 깔끔하게 잘풀었다고 생각이 드는 문제!
int answer = 0;
//뽑은 숫자가 같은 경우 없애야 하므로 stack 사용
Stack<Integer> stack = new Stack<>();
int length = board.length;
int[][] new_check = new int[length][length];
//행과 열을 바꿔줌 이러면 굉장히 쉽게 처리 할 수 있음 문제를 이해하고 조금만 생각해보면 이해가 될 것임!
//뽑기가 옆으로 누웠다고 상상하면됨
for(int i =0; i<length; i++){
for(int j =0; j<length; j++){
new_check[i][j] = board[j][i];
}
}
int where = 0;
int doll = 0;
for(int i =0; i<moves.length; i++){
//index 값이므로 -1
where = moves[i] -1;
for(int j =0; j<length; j++){
// 행열을 뒤집어 바꾸었기 때문에 쉽게 접근 가능
//뽑기가 옆으로 누웠다고 상상하면됨
doll = new_check[where][j];
if(doll !=0){
//비어있지 않다면
//비우고 나서 스택에 저장해주기
new_check[where][j] = 0;
//스택은 중복만 잘 확인해주면됨! 중복된다면 없애버리고 answer에 +2 해주기
if(!stack.empty() && stack.peek() == doll){
stack.pop();
answer +=2;
}else{
stack.push(doll);
}
break;
}
}
}
return answer;
}
}
문제: 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
728x90
반응형