본문 바로가기
TIL - 프로그래밍/Python 알고리즘

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

by chaemj97 2022. 6. 13.
728x90

https://programmers.co.kr/learn/courses/30/lessons/64061

 

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

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


  • 생각
    • 표 왼쪽에서 오른쪽으로 바꾸어 인형뽑기 실시
      • 남은 인형 수 확인 편리
      • 인형이 남아 있지 않는 경우 오류, 인덱스 오류 ㅡ> 해결
0 1 0 ㅡ> 1 2  
2 3 0 2 3 1
1 2 2 2    

  • 코드
# board : 인형배치(아래에서 위로 쌓임), moves : 인형 뽑는 열 위치

def solution(board, moves):
	# 인형 터트린 수
    answer = 0
    N = len(board)
    # 인형 바구니
    dolls = []
    
    # 인형배치(왼쪽에서 오른쪽으로 쌓기)
    board = list(map(list, zip(*board[::-1])))
    
    # 인형 없는 부분 지우기
    for i in range(N):
        while 0 in board[i]:
            board[i].remove(0)
            
    for n in moves:
        # 인형이 존재할 때
        if board[n - 1]:
            doll = board[n - 1].pop()
            # 바구니에 인형 없거나 마지막에 넣은 인형과 다르다면
            if dolls == [] or doll != dolls[-1]:
            	# 바구니에 추가
                dolls.append(doll)
            # 마지막에 넣은 인형과 같으면
            else:
            	# 터트리기
                dolls.pop()
                answer += 2
                
    return answer
728x90
반응형

댓글