프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr





import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < moves.length; i++) {
for(int j = 0; j < board.length; j++) {
if(board[j][moves[i] - 1] > 0) { // 인형이 있을 경우에 뽑기 진행
// 스택에 인형이 있고, 현재 뽑은 인형이랑 동일할 경우 터트리기
// 아니라면 스택에 인형 넣기
if(!stack.isEmpty() && board[j][moves[i] - 1] == stack.peek()) {
answer += 2;
stack.pop();
} else {
stack.add(board[j][moves[i] - 1]);
}
// 인형을 뽑은 자리에 0으로 초기화
board[j][moves[i] - 1] = 0;
break;
}
}
}
return answer;
}
}
느낀 점 및 정리 ✍️
1. 스택을 사용하여 뽑은 인형들을 스택에 넣고, 인형을 뽑을 때마다 스택의 가장 최상단의 인형과 일치하는지 확인, 일치한다면 인형 터트리기(answer += 2), stack.pop()
2. 아니라면 스택에 인형 넣는다
3. moves[i] - 1 을 한 이유는, 배열의 인덱스는 0부터 시작인데 크레인의 입력 값은 1부터 시작이기 때문에 크레인의 값에서 -1을 해주어야 인덱스가 맞는다
'Algorithm & SQL > Programmers' 카테고리의 다른 글
| [Programmers Lv.1 / Java] 크기가 작은 부분문자열 (0) | 2024.03.24 |
|---|---|
| [Programmers Lv.3 / MySQL] 물고기 종류 별 대어 찾기 (0) | 2024.03.24 |
| [Programmers Lv.2 / MySQL] 노선별 평균 역 사이 거리 조회하기 (0) | 2024.03.11 |
| [Programmers LV.4 / MySQL] 저자 별 카테고리 별 매출액 집계하기(GROUP BY) (0) | 2024.03.10 |
| [Programmers / MySQL] Python 개발자 찾기(SQL 고득점 Kit) (0) | 2024.02.26 |














