ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 깃
  • BFS
  • greedy
  • stack
  • getOrDefault
  • Arrays.sort()
  • java
  • HashMap
  • Comparator
  • 프로그래머스
  • PriorityQueue
  • 스택/큐
  • Queue
  • DP
  • 백준
  • kotiln
  • Android
  • sort
  • 안드로이드
  • compareTo()
  • 깃허브
  • 프로그래머스 Lv.2
  • git
  • dfs
  • entrySet
  • 코틀린
  • 해시
  • git bash
  • reactjs
  • React

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

[Java] 프로그래머스 : 크레인 인형뽑기 게임
Algorithm & Data Structure/프로그래머스

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

2022. 2. 14. 11:37

https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

풀이

변수

  • doll : 꺼낸 인형을 넣을 리스트나 스택 doll
  • board[i][m-1] : 꺼낸인형
  • answer : 터트린 인형개수

알고리즘

  • moves 만큼 for문 돌림
    • board의 길이만큼 for문 돌림
      • 꺼낸인형(board[i][m-1]) 이 0일 경우에는 continue
      • 꺼낸인형이 0이 아닐 시
        • doll에 넣은 마지막 인형과 같다면 인형을 터트리고 answer+2를 해줌
        • 아니라면 doll에 넣어줌
        • 인형을 꺼냈기 때문에 board[i][m-1] = 0

ArrayList 사용

import java.util.ArrayList;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0; // 터트려 사라진 인형개수
        ArrayList<Integer> dolls = new ArrayList<>(); // 바구니
        
        for(int move : moves){
            for(int i=0;i<board.length;i++){
                int doll = board[i][move-1];
                board[i][move-1] = 0; // 인형뽑음
                if(doll != 0){
                    if(dolls.size() == 0) dolls.add(doll); // 첫번째뽑기
                    else if(doll != dolls.get(dolls.size()-1)) {dolls.add(doll); } // 바구니에 넣음
                    else { dolls.remove(dolls.size()-1); answer += 2;} // 터짐
                    break;
                }
            }
        }
        
        return answer;
    }
}

Stack 사용

import java.util.Stack;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0; // 터트려 사라진 인형개수
        Stack<Integer> dolls = new Stack<>(); // 바구니
        
        for(int move : moves){
            for(int i=0;i<board.length;i++){
                int doll = board[i][move-1];
                board[i][move-1] = 0; // 인형뽑음
                if(doll != 0){
                    if(dolls.empty()) dolls.push(doll); // 첫번째뽑기
                    else if(doll != dolls.peek()) {dolls.push(doll); } // 바구니에 넣음
                    else { dolls.pop(); answer += 2;} // 터짐
                    break;
                }
            }
        }
        
        return answer;
    }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)  (0) 2022.02.14
[Java] 프로그래머스 : 키패드 누르기  (0) 2022.02.14
[Java] 프로그래머스 : 체육복  (0) 2022.02.14
[Java] 프로그래머스 : 모의고사  (0) 2022.02.11
[Java] 프로그래머스 : k번째 수  (0) 2022.02.11
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)
    • [Java] 프로그래머스 : 키패드 누르기
    • [Java] 프로그래머스 : 체육복
    • [Java] 프로그래머스 : 모의고사
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바