알고리즘 문제 풀기/백준(Baekjoon)

[백준 알고리즘] 15650. N과 M (2) - 조합

hibscus 2021. 3. 20. 18:23

 

조합문제이다.

 

 

 

 

순열과 비슷하면서도 다른데,

순열은 1,2 2,1 둘다 되지만, 조합은 1,2 만가능하다.

 

2 다음에는 2보다 작은 값이 올 수 없도록 처리하면 조합이 된다.

그래서 for의 범위를 넘겨주어 이전의 값+1 부터 뽑도록 했다.

 

N, M = map(int, input().split())
select = [0] * M


def comb(idx, start):
    if idx == M:
        print(" ".join(map(str, select)))
        return
    for i in range(start, N):
        select[idx] = i+1
        comb(idx+1, i+1)

comb(0, 0)

 

 

 

for문을 통해서 보면 이해하는 데 더 편하다.

arr = [1, 2, 3, 4, 5]
N = len(arr)
for i in range(0, N):
    for j in range(i + 1, N):
        for k in range(j + 1, N):
            print(arr[i], arr[j], arr[k])