본문 바로가기
Problem Solving/프로그래머스

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

by ggyongi 2021. 4. 25.
반응형

programmers.co.kr/learn/courses/30/lessons/64061?language=python3

 

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

[[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

def solution(board, moves):
    stack = []
    for move in moves:
        place = move-1
        catch = 0
        for i in range(len(board)):
            if board[i][place]!=0:
                catch = board[i][place]
                board[i][place]=0
                break
        if catch !=0:
            stack.append(catch)
    
    answer =[]
    for item in stack:
        if not answer:
            answer.append(item)
            continue
            
        if answer[-1]== item:
            answer.pop()
        else:
            answer.append(item)
    
    return len(stack)-len(answer)

 

<잘못한 점>

1. board[i][place] 해야되는데 board[place][i] 해서 시간 소요

2. catch !=0 조건을 처음에 넣지 않아 stack에 0도 쌓아버림

3. 인형이 연쇄적으로 사라지는 상황을 생각하지 못함

4. 문제에서 1부터 시작하는 번호가 있는지확인을 안해서 place = move라고 하여 list out of range 발생

5. 전체적으로 잔실수가 많아서 시간이 매우 오래걸림..

 

<개선 점>

1. stack에 인형을 담는 과정, 사라지는 인형 개수를 세는 과정을 분리해서 작성했는데 이를 분리하지 말고 인형이 추가될때마다 사라짐 여부를 조사하면 훨씬 더 간결한 코드 작성 가능

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글