멍두의 개발새발
[프로그래머스] 크레인 인형뽑기 게임 in Java 본문
반응형
📍 문제
https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📍 문제설명
인형을 뽑고 stack에 쌓은 뒤 stack에 연속으로 같은 인형이 있으면 인형이 터지고, 터진 인형 수를 합하는 문제이다.
대놓고 stack문제이다.
📍 코드
- 인형을 꺼낸다. 가로 좌표는 고정 + 세로 좌표만 이동, 끝까지 0이면 꺼낼 인형이 없으므로 for문 종료
- 꺼낸 인형 값과 스택에 쌓인 값을 비교한다. 동일하다면 꺼낸 인형을 스택에 쌓지 않고 기존 stack값만 꺼낸뒤 점수를 더한다. 이 인형은 사용했으므로 for문 종료
- 겹치지 않으면 인형을 stack에 쌓는다.
- moves가 끝날 때 까지 반복한다.
✔️ 코드
더보기
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int n = board.length;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < moves.length; i++){
//1. 인형을 꺼낸다
int y = moves[i] - 1;
int doll = -1;
for(int x = 0; x < n; x++){
if(board[x][y] != 0){
doll = board[x][y];
board[x][y] = 0;
break;
}
}
if(doll == -1){
continue;
}
//2. 값이 겹치는 지 검사한다
if(!stack.empty() && doll == stack.peek()){
answer+=2;
stack.pop();
continue;
}
//3. 값이 겹치지 않으면 stack에 쌓는다
stack.push(doll);
}
return answer;
}
}
📍 기억할 것
stack문제는 empty할 때 값을 검사하지 않도록 주의해야한다
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] - 완주하지 못한 선수 in Java (getOrDefault()) (1) | 2024.07.04 |
---|---|
[프로그래머스] 성격 유형 검사하기 in Java (0) | 2024.07.01 |
[프로그래머스] 햄버거 만들기 in Java (0) | 2024.06.27 |
[프로그래머스] 콜라츠 추측 in Java (1) | 2024.05.05 |