[프로그래머스 Lv1] 크레인 인형뽑기 게임 (파이썬)

Jewon Joel Park·2022년 6월 1일
0

Programmers-solution

목록 보기
7/34

문제 링크


문제 설명

주어진 2차원배열에서 숫자를 뽑아낼 때, 뽑아낸 숫자들이 2번 연속 같을 경우 사라지며, 사라진 숫자들의 갯수를 반환하는 함수 작성


풀이 코드

def solution(board, moves):
    stack = []
    answer = 0

    for move in moves:
        for line in board:
            if line[move-1] != 0:
                stack.append(line[move-1])
                line[move-1] = 0
                break
        if len(stack) > 1:
            if stack[-2] == stack[-1]:
                stack.pop()
                stack.pop()
                answer += 2
    return answer

코드 설명

  1. 뽑아낸 숫자들을 차례차례 저장할 리스트 stack 및 사라진 숫자들의 갯수를 저장할 정수형 변수 answer 생성
  2. 코드의 전체 동작횟수는 주어진 크레인 이동 숫자만큼만 동작하므로 moves를 순환하는 for Loop 선언
  3. 매 동작마다 board 안의 줄 개체에 접근해야하므로 또 다른 for Loop 선언
  4. 각 행의 move-1 인덱스에 해당하는 값이 0이 아닐 경우에만 동작하면 되므로 조건문을 설정하고, stack에 해당 값을 저장한 뒤 0으로 변환 후 line탐색 종료(break)
  5. stack에 저장된 값들의 확인은 매 크레인 이동마다 확인하면 되므로 indent에 주의하여 stack의 길이가 2 이상인지 판별하는 조건문 설정
  6. stack의 길이가 2 이상일 때, 뒤에서 첫번째와 두번째 개체 값이 동일할 경우 pop() 2번 수행 후 answer에 2를 더해줌
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글