조합문제이다.
순열과 비슷하면서도 다른데,
순열은 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])
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 15652. N과 M (4) - 중복조합 (0) | 2021.03.20 |
---|---|
[백준 알고리즘] 15651. N과 M (3) - 중복순열 (0) | 2021.03.20 |
[백준 알고리즘] 15649. N과 M (1) - 순열 (0) | 2021.03.20 |
[백준 알고리즘] 10026. 적록색약 - 파이썬, DFS (0) | 2021.03.08 |
[백준 알고리즘] 1012 유기농배추 _ 파이썬, dfs (0) | 2021.03.08 |