[알고리즘] 백트래킹 기본 예제 코드(순열, 조합)

2025. 3. 20. 10:58·크래프톤 정글/CS기초(키워드, 개념정리)

백트래킹으로 순열, 조합 구하기

백트래킹은 탐색 과정에서 불필요한 경로를 미리 차단하여 효율적으로 해를 찾는 기법인데요. 이를 활용하면 순열과 조합을 생성할 때, 가능한 모든 경우를 탐색하면서도 불필요한 연산을 줄일 수 있습니다. 

 

순열 (같은 수 중복 X)

n, m = map(int, input().split())
arr = [x for x in range(1, n+1)]
result = [0] * m
visited = [False] * n

def func(k):
    if k == m:
        print(*result)
        return

    for i in range(n):
        if not visited[i]:
            visited[i] = True
            result[k] = arr[i]
            func(k+1)
            visited[i] = False

func(0)

 

조합  (같은 수 중복 X)

n, m = map(int, input().split())
arr = [x for x in range(1, n+1)]
visited = [False] * n
result = [0] * m

def func(k, st):
    if k == m:
        print(*result)
        return

    for i in range(st, n):
        if not visited[i]:
            visited[i] = True
            result[k] = arr[i]
            func(k+1, i+1)
            visited[i] = False

func(0, 0)

 

순열 (같은 수 중복 O)

n, m = map(int, input().split())
arr = [x for x in range(1, n+1)]
result = [0] * m

def func(k):
    if k == m:
        print(*result)
        return
    
    for i in range(n):
        result[k] = arr[i]
        func(k+1)

func(0)

 

조합 (같은 수 중복 O)

n, m = map(int, input().split())
arr = [x for x in range(1, n+1)]
result = [0] * m

def func(k, st):
    if k == m:
        print(*result)
        return
    
    for i in range(st, n):
        result[k] = arr[i]
        func(k+1, i)

func(0, 0)
저작자표시 비영리 변경금지

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[CS기초] 이분 탐색(Binary Search)  (0) 2025.03.25
[중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU  (0) 2025.03.20
[CS기초] 정수론(Number Theory)  (0) 2025.03.19
[CS기초] 완전 탐색(Brute Force)  (0) 2025.03.19
[CS기초] 정렬(Sort)  (0) 2025.03.19
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] 이분 탐색(Binary Search)
  • [중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU
  • [CS기초] 정수론(Number Theory)
  • [CS기초] 완전 탐색(Brute Force)
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[알고리즘] 백트래킹 기본 예제 코드(순열, 조합)
상단으로

티스토리툴바