본문 바로가기
알고리즘/PROGRAMMERS

크레인 인형뽑기 게임(Lv.1)

by 현대타운301 2024. 3. 21.

 

 


 

H3 중제목

 

 

입출력 예시

 

 

요약

바구니에 2개의 같은 인형이 위치하면 사라짐

 


 

풀이

 

문제 해석

넣기 전 바구니의 개수가 1개 이상일 경우,

뽑은 인형과 비교해서 같으면 넣지 않고 바구니의 담긴 마지막 인형 제거

 

 

접근 방식

1. moves = col+1로 생각

  → 열의 번호(moves[i])가 1번부터 시작

 

2. moves[i]에 해당하는 열의 row를 최대 배열 크기만큼 순회

  → 0은 인형이 없는 것을 뜻하기 때문에 0이 아닐때까지 반복해서 찾는다.

 


 

코드리뷰

 

import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int count = 0;
        List<Integer> list = new ArrayList<>();	// 바구니로 사용할 list
        for(int i = 0; i < moves.length; i++) {
            int col = moves[i]-1;	// col 설정
            for(int j = 0; j < board.length; j++) {
                if(board[j][col] != 0) {	// row를 0부터 board.length까지 순회
                    int num = board[j][col];	// 꺼낸 인형 번호 담기
                    board[j][col] = 0;	// 꺼냈으면 해당 값은 0으로 바꿈
                    if(list.size() >= 1 && list.get(list.size()-1) == num) {	// 리스트에 담긴 인형이 있고, 마지막 인형의 번호와 num이 같으면
                        list.remove(list.size()-1);	// 마지막 인형 제거
                        count += 2;	// 결국 인형 2개가 없어진 것과 동일
                    } else {
                        list.add(num);	// 다르면 바구니에 추가
                    }
                    break;	// 뽑기가 끝났으면 break
                }
            }
        }
        System.out.println(list);
        return count;
    }
}

 

 

 

'알고리즘 > PROGRAMMERS' 카테고리의 다른 글

완주하지 못한 선수(Lv.1)  (0) 2024.03.21
소수 찾기(Lv.2)  (0) 2024.03.21
키패드 누르기(Lv.1)  (0) 2024.03.21
성격 유형 검사하기(Lv.1)  (0) 2024.03.21
신규 아이디 추천(Lv.1)  (0) 2024.03.21