STUDY/Algorithm

[프로그래머스] LEVEL3 서머코딩/윈터코딩(2019) 종이접기, python3

sinawi95 2020. 1. 8. 09:32
728x90

def solution(n):
    answer = []
    for i in range(n): 
        if answer!=[]:
            tmp=[]
            tmp_rvs=[]
            for j in answer[-1]:
                tmp.append(j)
                if j==1:
                    tmp_rvs.append(0)
                elif j==0:
                    tmp_rvs.append(1)
            tmp.append(0)
            tmp_rvs.reverse()
            for j in tmp_rvs:
                tmp.append(j)
            answer.append(tmp)
        else:
            answer.append([0])
    return answer[-1]


이 규칙은 쉽게 생각했다.

N+1번째 배열은 가운데 0을 기준으로(추가해주고) 왼쪽은 N번째 배열 오른쪽은 N번째 배열의 순서와 접은 방향을 반대로한 배열을 배치해주면 되었다.

이러한 규칙은 계속 이전 배열을 저장해주면서 사용해주어야 해서 answer에 추가하는 방식을 사용했다.

그리고 answer에 계속 쌓이기 때문에 가장 마지막 원소(answer[-1])를 리턴했다.