알고리즘/프로그래머스

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

(ㅇㅅㅎ) 2020. 6. 20. 22:54
728x90
반응형

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

 

이 문제는 크레인(board)에서 moves에 입력된 순서대로 인형을 뽑아서 바구니에 넣습니다.

바구니에 넣을 때 같은 모양의 인형이 2개가 붙어있으면 터트러져 사라집니다.

터트려진 인형의 개수를 출력하는 문제입니다.

 

입력 : board, moves

 - board : 2차원 배열로 가로줄씩 크레인 상태를 담은 변수입니다.

             배열 안에 0은 빈 공간을 의미하고 0 이외의 숫자는 인형의 모양입니다. 

 - moves : 뽑을 인형의 위치를 담은 변수입니다.

 

출력 : answer

 - answer :  바구니에 인형을 담는 과정에서 터트러져 사라진 인형의 개수입니다.

 

코드를 보시려면 더보기를 클릭하시면 됩니다.

더보기

크레인 인형뽑기 게임

# 문제
# 크레인 인형뽑기 게임
# https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3#
 
# 나의 풀이
def solution(board, moves):
    basket = [0]
    answer = 0
    for i in range(len(moves)):
        for j in range(len(board)):
            sero = list(zip(*board))[moves[i] - 1]
            if sero[j] != 0:
                if basket[-1== sero[j]:
                    del basket[-1]
                    answer += 2
                else:
                    basket.append(sero[j])
 
                board[j][moves[i] - 1= 0
                break
    return answer
 
if __name__ == '__main__':
    print(solution([[00000],
                    [00103],
                    [02501],
                    [42442],
                    [35131]], [15351214]))

 

list를 이용하여 문제를 풀었습니다. 그리하여 세로줄로 뽑는 것은 zip을 이용하였고 바구니에 넣을 때 같은 모양의 인형이 2개가 붙어있으면 del을 이용하여 삭제했습니다.

del 외에 pop을 이용하여 문제를 풀 수도 있습니다. 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스/Python]풍선 터트리기  (0) 2020.09.19