반응형
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> answerStack = new Stack<>();
for(int i = 0; i < moves.length; i++) {
for(int k = 0 ; k < board.length; k++) {
int num = moves[i]-1;
// 숫자가 0이 아닌지 판별
if(board[k][num] != 0) {
// answerStack 크기가 0일 경우 peek() 에러 발생
// answerStack Last 숫자와 같을 경우 answerStack Last 숫자 Out
if(!answerStack.isEmpty() && answerStack.peek() == board[k][num]) {
answerStack.pop();
answer += 2;
} else {
// 위 두 조건을 만족하지 않을 시 push
answerStack.push(board[k][num]);
}
// pop/push 여부와 상관 없이 0이 아닐 경우 숫자 0으로 초기화
board[k][num] = 0;
break;
}
}
}
return answer;
}
}
소감
사실 이 문제는 이중 배열만 보고 어렵겠구나싶어 계속 안 풀고 있었다
남들이 보기에는 에게? 저 문제를 안 풀려했었다고? 이럴 수 있다
도전하고 못 풀었을 때 상실감이 너무 크기에 도전이 꺼려지기는 한다
그렇지만 풀어보고 시도했기에 내가 부족한 부분을 알고 채울 수 있었고 문제를 해결할 수 있었다
다음에도 어려워 보이는 문제가 있더라도 풀어보려고 시도는 계속하려한다
부족한 실력이기에 다른 분들보다 더 효율적으로 코드를 작성하지 못하더라도 봐주시는 분들께 감사하다
반응형
'개발 > 알고리즘' 카테고리의 다른 글
Programmers - 괄호 회전하기 (0) | 2021.12.29 |
---|---|
Programmers - 오픈채팅방 (0) | 2021.12.25 |
Programmers - [1차] 다트 게임 (0) | 2021.11.19 |
위클리 챌린지 - 최소직사각형 (Java, Javascript) (0) | 2021.11.18 |
Programmers - 위클리 4주차 (0) | 2021.09.06 |