코테/프로그래머스

[프로그래머스/Lv. 1] 크레인 인형뽑기 게임

imname1am 2023. 4. 4. 17:50
반응형

🔺 문제

 

프로그래머스

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

programmers.co.kr

 

🔺 코드

 

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

문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고

mozzioi.tistory.com

import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0; // 터뜨려 사라진 인형 개수
        
        Stack<Integer> bucket = new Stack<>();
        
        for(int move : moves) {
            for(int i = 0 ; i < board.length ; i++) {
                if(board[i][move - 1] == 0)  {
                    continue;
                } else {
                    if(!bucket.isEmpty() && board[i][move-1] == bucket.peek()) {
                        answer += 2;
                        bucket.pop();
                    } else {
                        bucket.add(board[i][move-1]);
                    }
                    
                    board[i][move - 1] = 0; // 인형 뽑기
                    break;
                }
            }
        }
        
        return answer;
    }
}
✅ 해결 아이디어
- 스택 사용


🔺 다른 풀이들

- 풀이1)

 

[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)

[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)

velog.io

 

스택에 먼저 0을 넣어두시고,  겟또한 값이 0이 아닌 경우,

맨 위 값을 비교해서 answer를 구하는 식으로 푸셨다.

 

 

- 풀이2)

 

[프로그래머스,Level 1] 크레인 인형뽑기 게임(JAVA 구현)

- 첫 풀이 및 정답풀이 문제 내용이 좀 길긴 한데 천천히 읽어보면 별 문제 없다. 요점은 2차원 배열에는 1~100까지의 정수가 주어지는데, 이 정수는 서로 다른 인형들을 의미하는 것이며, 1차원 배

fbtmdwhd33.tistory.com

나중에 복습할 때 읽어봐야지

 

 

- 풀이3)

 

프로그래머스

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

programmers.co.kr

import java.util.ArrayList;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;

        ArrayList<Integer> list = new ArrayList<>();

        for (int j : moves) {
            for (int i = 0; i < board.length; i++) {
                if (board[i][j-1] != 0) {
                
                    if (list.size() == 0) {
                        list.add(board[i][j-1]);
                    }
                    else if(list.get(list.size()-1) == board[i][j-1]) {
                        list.remove(list.size()-1);
                        answer += 2;
                    }
                    else {
                        list.add(board[i][j-1]);
                    }
                    
                    board[i][j-1] = 0;	// 인형 뽑기
                    break;
                }
            }
        }

        return answer;
    }
}

리스트를 활용하셨다!

리스트도 remove가 가능하구나,,,,

 


💬 느낀 점

스택 사용할 생각은 했었는데.. 그 인덱스를 어찌 처리할지 고민하다가 ,, 그렇게 됐다...(?)😓

언제쯤 잘할 수 있을까!!!

반응형