프로그래머스 - 크레인 인형뽑기 게임 - Python

devmin24·2021년 3월 18일
1

⏳ 도전! 알고리즘

목록 보기
13/32

프로그래머스는 문제 설명이 참 친절한 것 같다!
귀여운 그림이 담긴 문제를 먼저 보자.

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64061

이차원 배열과 스택을 이용하여 푸는 문제이다. 눈으로만 훑어보기에는 헷갈리기 때문에 그림을 그려가며 코드를 구현했다.

풀이

  1. 크레인은 좌,우가 아닌 상,하로 움직이기 때문에 board[j][i]로 인덱스 값을 주었다.
  2. 뽑을 열의 가장 꼭대기에 인형이 없으면 인형이 있는 곳까지 반복한다.
  3. 인형이 있으면 뽑은 후 0으로 바꿔주어 빈 곳을 표시한다.
  4. 인형을 뽑은 후 또 뽑지 않도록 break를 걸어준다.
  5. 뽑은 인형이 2개 이상이며 맨 위의 인형과 그 밑의 인형이 같다면 팡! 터트려준다(없애준다).
  6. 터진 인형의 갯수는 한번 터질 때 2개씩 사라진다.

해답

def solution(board, moves):
    machine = []       
    answer = 0
    
    for i in moves : # moves = [1,5,3,5,1,2,1,4]
        for j in range(len(board)): # [0,1,2,3,4]
            if board[j][i-1] != 0 : # 인덱스 값을 하기 위해 -1
                machine.append(board[j][i-1])
                board[j][i-1] = 0 # 0이 아니면 인형을 뽑은 다음 뽑은 것은 0으로 처리
                break # 한번만 해주기 위해
            else :
                continue # 0이면 반복문 처음으로 돌아가서 다음 탐색
        if len(machine) > 1 and machine[-1] == machine[-2] :
            machine = machine[:len(machine)-2] #2개 이상이며 끝의 인형 2개가 같으면 사라져야한다.
            answer += 2
    return answer # 사라진 인형은 2개씩이므로

처음에 상하 / 좌우 때문에 i,j가 헷갈렸다. 차근차근 그림을 그리며 이해하다보니 쉬워졌다.

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻

0개의 댓글