옴클
학습문제집문제제출이력게시판그룹휴식리더보드

© 2026 옴클. All rights reserved.

이용약관개인정보처리방침

    파이썬 알고리즘 실버

    문제집 76문제
    1. 1완전탐색16문제
    2. 정렬 알고리즘
    3. 유클리드 호제법
    4. 에라토스테네스의 채
    5. 재귀함수
    6. 그리디 알고리즘
    7. 자료구조 - 스택
    8. 자료구조 - 큐와 덱
    9. 자료구조 - 집합
    10. 그래프 표현
    11. DFS (깊이우선탐색)
    12. BFS (너비우선탐색)
    13. 트리
    14. 우선순위 큐 (힙)

    직접 해보세요

    python
    1. 학습
    2. /
    3. 파이썬 알고리즘 실버
    4. /
    5. 완전탐색

    완전탐색

    레슨 1 · 파이썬 알고리즘 실버

    완전탐색 (브루트포스)

    **완전탐색(Brute Force)**은 가능한 모든 경우의 수를 직접 확인하는 방법이에요. 구현이 단순하고 확실하지만, 경우의 수가 많아지면 시간 초과가 날 수 있어요.


    순열 (Permutation)

    n개 중 r개를 순서 있게 뽑는 경우의 수 = nPr

    python
    from itertools import permutations
    
    arr = [1, 2, 3, 4, 5]
    
    for perm in permutations(arr, 3):   # 5P3 = 60가지
        print(perm)
    # (1,2,3), (1,2,4), ...
    
    import math
    print(math.perm(5, 3))   # 60

    조합 (Combination)

    n개 중 r개를 순서 없이 뽑는 경우의 수 = nCr

    python
    from itertools import combinations
    
    arr = [1, 2, 3, 4, 5]
    
    for comb in combinations(arr, 3):   # 5C3 = 10가지
        print(comb)
    # (1,2,3), (1,2,4), (1,2,5), ...
    
    import math
    print(math.comb(5, 3))   # 10

    중복 순열 / 중복 조합

    python
    from itertools import product, combinations_with_replacement
    
    arr = [1, 2, 3]
    
    # 중복 순열: 3개에서 2개를 중복 허용해서 순서 있게
    for p in product(arr, repeat=2):
        print(p)   # (1,1), (1,2), (1,3), (2,1), ...
    
    # 중복 조합: 3개에서 2개를 중복 허용해서 순서 없게
    for c in combinations_with_replacement(arr, 2):
        print(c)   # (1,1), (1,2), (1,3), (2,2), (2,3), (3,3)

    정리

    함수설명개수
    permutations(arr, r)순열 (순서 O, 중복 X)nPr
    combinations(arr, r)조합 (순서 X, 중복 X)nCr
    product(arr, repeat=r)중복 순열 (순서 O, 중복 O)nʳ
    combinations_with_replacement(arr,r)중복 조합n+r-1Cr

    코드를 직접 실행해보고 싶나요?

    로그인하면 코드 에디터를 사용하고 진도를 저장할 수 있어요.