[프로그래머스] 크레인 인형뽑기 게임 - JAVA

2024. 9. 23. 23:58·알고리즘

 

 

풀이

import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int i : moves) {
for (int j = 0; j < board.length; j++) {
if (board[j][i-1] != 0) {
int item = board[j][i-1];
board[j][i-1] = 0;
if (!stack.isEmpty() && stack.peek() == item) {
stack.pop();
answer += 2;
} else {
stack.push(item);
}
break;
}
}
}
return answer;
}
}

 

 

이 문제는 stack을 사용하면 쉽게 풀 수 있다.

풀면서 헷갈리게 만드는 점이 두 가지 있었는데 풀면서 문제가 참 불친절하다고 생각했다...

우선 제일 헷갈렸던 건 행렬인데 i가 행, j가 열인 줄 알고 풀었다가 대차게 틀리고 그림을 그려보고 확실하게 이해하게 됐다.

 

문제의 예시를 인형뽑기 크레인처럼 놓아본다면 아래와 같다.

 

Row 0: 0 0 0 0 0  <-- 가장 위쪽 (행 4)
Row 1: 0 0 1 0 3  <-- 행 3
Row 2: 0 2 5 0 1  <-- 행 2
Row 3: 4 2 4 4 2  <-- 행 1
Row 4: 3 5 1 3 1  <-- 가장 아래쪽 (행 0)

 

 

그래서 행/열을 바꿔 board[j][i-1]를 구해야 문제를 풀 수 있다.

board[j][i-1]이 0이 아니면 item 변수에 board[j][i-1]의 값을 넣고 해당 칸에서는 인형을 뽑았기 때문에 0을 대입한다.

stack이 비어있지 않고 stack의 마지막 값과 현재 item의 값이 동일하면 stack.pop()을 사용해 맨 위(뒤)의 값을 제거한다.

 

문제에서는 제거한 인형의 수를 계산하는 것이기 때문에 answer에는 2를 더해줘야 한다.

위의 조건에 만족하지 않으면 stack에 방금 뽑아온 인형(board[j][i-1]의 값)을 추가하면 된다.

 

저작자표시 비영리 변경금지 (새창열림)
'알고리즘' 카테고리의 다른 글
  • [알고리즘] Java로 배우는 카운팅 정렬 - feat.백준(수 정렬하기3)
  • [알고리즘] Java로 배우는 이진탐색 - feat.백준(숫자 카드 2)
  • [프로그래머스] 실패율 - JAVA
  • [백준] 1181번: 단어 정렬 - JAVA
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    Swift
    객체
    JPA
    spring
    스프링
    Java
    DB
    Database
    알고리즘
    백준
    html
    생성자
    sql
    최주호
    MVC
    HTTP
    자바스크립트
    Spring Security
    성능최적화
    김영한
    프로그래머스
    javascript
    jsp
    의존성주입
    다형성
    변수
    Security
    데이터베이스
    게시판만들기
    자바
  • hELLO· Designed By정상우.v4.10.0
뚜비
[프로그래머스] 크레인 인형뽑기 게임 - JAVA
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.