알고리즘/프로그래머스

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

정석이 2022. 3. 15. 16:02

https://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):
    answer = 0
                
    my_doll = []
    for out in moves:
        for i in range(len(board)):
            if board[i][out - 1] != 0:
                if len(my_doll) == 0:  # 인형 쌓는곳이 비어있으면
                     my_doll.append(board[i][out - 1])
                else:  # 인형이 이미 쌓여있으면
                    if my_doll[len(my_doll) - 1] == board[i][out - 1]:  # 제일 위에꺼랑 비교, 같으면
                        my_doll = my_doll[:-1]  # 맨 뒤에꺼 자름
                        answer += 2
                    else:  # 다르면 인형 넣어
                        my_doll.append(board[i][out - 1])
                
                board[i][out - 1] = 0
                break
                   
            
    return answer

 

 

 


 

남의 코드 확인

 

 

 

 

 

 

매우 간결한 코드이다.

 

 

0이 아니면 붙이고 0으로 초기화, 스택리스트에 인형이 1개 초과로 있고

 

 

맨 뒤에꺼랑 그 앞꺼가 같으면 pop()으로 지워줌. pop(index)라서 지우고 지우고 해준거

 

 

 

아~ 맨 뒤에꺼 찾을 때 my_doll[len(my_doll) - 1] 이렇게 해줬는데 그냥 my_doll[-1] 하면 되는구나 ㅎㅎ