반응형
링크
https://programmers.co.kr/learn/courses/30/lessons/64061
처음 코드
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int[][] temp = board;
int answer = 0;
Stack<Integer> st = new Stack<Integer>();
for(int i = 0; i < moves.length; i++) {
for(int j = 0; j < board.length; j++) {
int n = temp[j][moves[i]-1];
if(n != 0) {
st.push(n);
temp[j][moves[i]-1] = 0;
break;
}
}
//같은 모양의 인형 두 개가 바구니에 연속해서 쌓이게 된 경우 검사
//스택에서 같은지 안 같은지 검사하기
if(st.size() >= 2) {
int n1 = st.pop();
int n2 = st.pop();
if(n1 == n2) {
answer += 2;
} else {
st.push(n2);
st.push(n1);
}
}
}
return answer;
}
}
수정 코드
temp는 필요없음
크레인이 인형을 집었을 때 바로 스택이랑 검사
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> st = new Stack<Integer>();
for(int i = 0; i < moves.length; i++) {
for(int j = 0; j < board.length; j++) {
int n = board[j][moves[i]-1];
if(n != 0) {
if(st.isEmpty()) {
st.push(n);
board[j][moves[i]-1] = 0;
break;
}
if(st.peek() == n) {
st.pop();
answer += 2;
} else {
st.push(n);
}
board[j][moves[i]-1] = 0;
break;
}
}
}
return answer;
}
}
반응형
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Java] [3차] 압축 (2018 KAKAO BLIND RECRUITMENT) (0) | 2020.09.12 |
---|---|
[프로그래머스 - Java] 점프와 순간 이동 (0) | 2020.09.10 |
[프로그래머스 - Java] 단어 변환 (DFS/BFS Level 3) (0) | 2020.05.19 |
[프로그래머스 - Java] 비밀지도(2018 KAKAO BLIND RECRUITMENT [1차]) (0) | 2020.05.03 |
[프로그래머스 - Java] 괄호 변환 - (2020 카카오 공채) (0) | 2020.04.04 |
댓글