티스토리 뷰

카테고리 없음

15650 - N과M(2)

백수진 2021. 3. 19. 01:14
array = []
check = [0]*15

n , m = map(int,input().split())

def fun(cnt,be):
    if cnt==m:
        for i in range(0,cnt):
            print(array[i],end = '')
        print()
        return
    else:
        for i in range(1,n+1):
            if(i>be and check[i]!=1):
                check[i] = 1
                # array[cnt]=i => 이렇게 하려면 array에 원소가 있어야함.
                # array = [0]*15로 0을 다 넣어줬던가 했어야함
                array.insert(cnt,i)
                #만약에 array에 원소가 없었다면 insert(번호,저장할값)을 이용해 넣어주기
                fun(cnt+1,i)
                check[i]=0

fun(0,0)

n,m (1)과 다른점은 array에 저장된 이전 값보다 더 큰 값이 와야한다는 것.

오름차순으로 정렬되어 있으니까 array에 들어간 바로 직전의 값보다 현재 들어오려고 하는 값이 더 크면 됨.

=> 이전 번호를 기억해야함, 비교해야함

before을 의미하는 be변수를 넘겨주면서 시작


//주척처리를 한 코드에서 에러가 남.

<오늘의 알게된점>

왜인지 찾아보니, IndexError: list assignment index out of range.

인덱스가 범위를 넘어섰다는데 범위지정을 해줘야했나?라고 생각해서 구글링.

알고보니, 배열에 원소가 없었다면 해당 원소를 넣을 번호에 특정 값을 넣을 수 없음.

-> 1. 배열을 0으로 초기화해서 사용할만큼의 크기를 잡아줌

array = [0]*15로 0값을 넣어줌

-> 2. array.insert(넣을위치,넣을값)을 통해서 넣어줄 수 있음