Coding/프로그래머스

[2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 with Python(★)

sinabro_dy 2022. 7. 18. 23:25
문제

 

 

내가 작성한 코드(못 품)
def solution(board, moves):

    answer = []                   # 인형을 집어넣을 바구니를 의미하는 변수
    cnt = set()                   # 바구니에서 사라진 인형 수를 구할 변수
    
                                  
    for i in moves:               # moves 배열을 반복문으로 출력

        for j in board:           # board 2차 행렬을 하나씩 출력

            if j[i-1] == 0:       # i는 1부터 시작하므로 1을 빼주고, moves에 추출된 값이 0이면 통과
                continue
                
            else:                 
                
                answer.append(j[i-1])     # 0이 아닌 값을 answer(바구니)에 담기
                j[i-1] = 0                # 그리고 그 값을 0으로 바꿈
                if len(answer) == 1:      # answer 변수의 길이가 1이면 통과
                    continue
                else:
                    if answer[-2] == answer[-1]:        # 연속으로 같은 값이면 pop() 함수를 사용하여 제거
                        v = answer.pop()
                        answer.pop()
                        cnt.add(v)        # cnt 변수에 사라진 인형의 수를 추가함
                        break
                        
    return len(cnt)

> 지문 코드 테스트에서는 통과했지만... 제출 후 실행 결과는 전체 다 틀림....

> 무엇이 문제인지 모르겠다... ㅜㅜ

 

참고한 코드
def solution(board, moves):
    stacklist = []
    answer = 0
    
    for move in moves:
        for i in range(len(board)):
            if board[i][move-1] != 0:
                stacklist.append(board[i][move-1])
                board[i][move-1] = 0
                
                if len(stacklist) > 1:
                    if stacklist[-1] == stacklist[-2]:
                        stacklist.pop(-1)
                        stacklist.pop(-1)
                        answer += 2
                break
    return answer

> 내가 참고한 블로그

https://jokerldg.github.io/algorithm/2021/03/28/crane-doll.html

 

프로그래머스 크레인 인형뽑기 게임 (python 파이썬) - Tech

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

jokerldg.github.io

> 전체적인 풀이 과정은 나와 같다고 할 수 있다. 하지만, 디테일한 면에서 차이가 크다는 것을 알 수 있었다!!

> 내 코드는 굉장히 깔끔하지 않아서, 나 조차도 어디서 break를 걸어줘야 되는지 헷갈린다... 코드 정리를 깔끔하게 해보자!!

> break 의 위치에 따라서 결과가 달라지므로, break를 사용할 때 어떤 위치에서 적용해야 할지 생각하자!!