Coding/백준

[15651번] N과 M (3) with Python

sinabro_dy 2022. 7. 26. 18:36
문제

 

내가 작성한 코드
# N, M 입력
n, m = map(int, input().split())
s = []

def dfs():
    if len(s) == m:
        print(' '.join(map(str, s)))
        return
    for i in range(1, n + 1):
        s.append(i)
        dfs()
        s.pop()

dfs()

> 처음으로 백트래킹 맞췄다!!!

> 점점 감을 잡아가는 듯!!!

 

코드 설명
n, m = map(int, input().split())
s = []

> 여기는 N과 M 값을 받는 변수이고, s 라는 빈 리스트를 생성해서 값을 출력시키기 위한 리스트입니다.

 

def dfs():
    if len(s) == m:
        print(' '.join(map(str, s)))
        return
    for i in range(1, n + 1):
        s.append(i)
        dfs()
        s.pop()

> 이번 N과 M 문제는 중복되는 값이 나와도 될 뿐만 아니라, 같은 수가 나와도 된다는 점입니다.

> 이전에는 for 문 안에 if i not in s : 라는 if 문을 사용해서 같은 수를 제거하기 위한 코드를 작성했었는데, 이번에는 같은 수가 나와야 되므로 if문을 제거해주었습니다.

> 나머지는 코드는 모두 같습니다!!