프로그래머스 크레인 인형뽑기 게임 [Java]
문제출처
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
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> bucket = new Stack<Integer>();
for(int m : moves){
int i = 0;
while(i < board.length){
if(board[i][m - 1] != 0) {
break;
}
if(board[i][m - 1] == 0){
i++;
}
}
if(i >= board.length) continue;
if(bucket.empty() != true){
if(bucket.peek() != board[i][m - 1]){
bucket.push(board[i][m - 1]);
}
else{
answer++;
bucket.pop();
}
}
else{
bucket.push(board[i][m - 1]);
}
board[i][m - 1] = 0;
}
return answer * 2;
}
}
문제를 읽자마자 스택을 이용해야겠다고 생각했다.
(알바하면서 틈날때마다 핸드폰 좁은화면으로 프로그래머스를 풀다보니 가독성이 구려지는 코드가 자꾸 나온다ㅠㅠ)
주어진 인덱스를 이용해 해당 열에서 0이면 i를 증가시켜 다음을 확인해서 인형 위치를 파악
스택에서 맨 위에 위치한 인형을 보고 같으면 pop해주고 answer를 증가
아니라면 push
그리고 해당 위치는 인형을 꺼냈기 때문에 0으로 변경해준다.
그리고 중요한거... 자꾸 틀렸다고 나와서 왜지? 했는데 인형이 터진 횟수가 아니라
터진 인형의 개수가 정답이었다 그래서 answer * 2를 해주었다.
끝
'문제풀이 > 코딩테스트' 카테고리의 다른 글
프로그래머스 완주하지 못한 선수 [Java] (0) | 2022.02.22 |
---|---|
프로그래머스 소수 만들기 [Java] (0) | 2022.02.20 |
프로그래머스 키패드 누르기 [Java] (0) | 2022.02.15 |
프로그래머스 숫자 문자열과 영단어 [Java] (0) | 2022.02.14 |
프로그래머스 신규 아이디 추천 [Java] (0) | 2022.02.13 |