문제 : https://programmers.co.kr/learn/courses/30/lessons/62049

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

▶ 코드

# n=1 -> 0
# n=2 -> 0 0 1
# n=3 -> 0 0 1 0 0 1 1
# n=4 -> 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1 (직접 종이 접어보았다)

# 규칙: 이전 배열뒤에 0을 붙히고, "이전 배열을 뒤집어서, 0,1을 반전시킨 배열"을 붙힌다.

import copy

def reverse(lst):   # 배열 뒤집기
    lst.reverse()
    return lst

def flip(lst):      # 0,1 반전 
    t = []
    for a in lst:
        if a == 0:
            t.append(1)
        else:
            t.append(0)
    return t

def solution(n):
    if n == 1:
        return [0]
    
    start = [0]
    for i in range(2, n+1):
        temp = copy.deepcopy(start) # 배열 깊은 복사 
        start += [0] + flip(reverse(temp))
        #print(start)
    return start
        
solution(3)

# 참조 : https://velog.io/@ansrjsdn/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-level3-%EC%A2%85%EC%9D%B4%EC%A0%91%EA%B8%B0-Python