Algorithm/Baekjoon

[Python] 15649. N과 M(1)

느낌표 공장장 2021. 9. 7. 00:33

방문 처리를 하면서 수열을 구하는 코드.

def recur(cur):
    # m개 골랐다면 print
    if cur == m:
        print(*arr)
        return

    for i in range(n):
        if not visited[i]:  # 중복 아니라면
            visited[i] = True   # 방문 처리
            arr[cur] = i+1      # 리스트에 숫자 담기
            recur(cur + 1)      # 그 다음 숫자 들어가서 가져와
            visited[i] = False  # 다음에 쓰기 위해 방문 처리 해제
            

# 1부터 자연수 n까지, 중복없이 m개 고른 수열 구하기
n, m = map(int, input().split())
arr = [0 for _ in range(m)]     # 길이가 m인 수열 담을 리스트
visited = [False for _ in range(n)] # 중복 없어야하니, 방문처리할 리스트 만들어준다.

recur(0)​

 

 in 사용하여 검토할 숫자가 수열 리스트에 이미 들어가 있는지 확인하며 수열을 구하는 코드.

def recur(cur):
    # m개 골랐다면 print
    if cur == m:
        print(*arr)
        return

    for i in range(1, n+1):
        if i not in arr:    # 해당 숫자가 고른 숫자가 아니라면
           arr[cur] = i    # 리스트에 숫자 넣기
           recur(cur + 1)  # 들어가서 다음 숫자 넣어
           arr[cur] = 0    # 리스트 쓸거니까 0으로 초기화


# 1부터 자연수 n까지, 중복없이 m개 고른 수열 구하기
n, m = map(int, input().split())
arr = [0 for _ in range(m)]     # 길이가 m인 수열 담을 리스트

recur(0)

 

'Algorithm > Baekjoon' 카테고리의 다른 글

[Python] 9095. 1, 2, 3 더하기  (0) 2021.09.19
[Python] 2103. 이친수  (0) 2021.09.19
[Python] 11727. 2xn 타일링 2  (0) 2021.09.19
[Python] 9020. 골드바흐의 추측  (0) 2021.09.14
[Python] 21919. 소수 최소 공배수  (0) 2021.09.14