바로 스택으로 풀어야겠다는 생각이 든 문제였다.
인형을 세로로 뽑기 때문에 세로로 바꿨는데 다른 분들이 푼 답을 보면 바꿀 필요는 없는 것 같다.
최종 코드
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
// 인형을 담을 스택
Stack<Integer> st = new Stack<>();
// 인형 세로배열로 바꾸기
int[][] temp = new int[board.length][board[0].length];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
temp[i][j] = board[j][i];
}
}
for (int i = 0; i < moves.length; i++) {
for (int j = 0; j < temp[0].length; j++) {
// 인형이 없으면
if(temp[moves[i]-1][j] == 0) {
continue;
}
else {
// 같은 모양의 인형 제거하고 점수
if(!st.isEmpty() && temp[moves[i]-1][j] == st.peek()) {
answer += 2;
st.pop();
}
else {
// 인형 뽑기
st.add(temp[moves[i]-1][j]);
}
// 뽑은 인형 0으로 초기화
temp[moves[i]-1][j] = 0;
break;
}
}
}
return answer;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 최솟값 만들기 (0) | 2021.12.04 |
---|---|
(Java) 프로그래머스 키패드 누르기 (0) | 2021.12.03 |
(Java) 프로그래머스 숫자 문자열과 영단어 (0) | 2021.11.27 |
(Java) 프로그래머스 폰켓몬 (0) | 2021.11.24 |
(Java) 프로그래머스 실패율 (0) | 2021.11.23 |