조합 3

[백준 알고리즘] 2309.일곱난쟁이 - 부분집합의 합(조합)

부분집합의 합이 100이 되도록 하면 되는 문제이다. 재귀를 사용해 풀었고, 만족하는 조건을 한번만 출력하면 되기에 flag 변수를 사용했다. 만족하는 경우 이후 재귀에서 바로 return 하도록 만들어 함수를 끝냈다. #### 부분집합의 합 -> 조합 def subset(idx ,cur_sum, start): global flag if flag == 1: return if idx == 7: if cur_sum == 100: flag = 1 select.sort() for i in select: print(i) return 1 return for i in range(start, 9): select.append(dwarfs[i]) subset(idx+1, cur_sum+dwarfs[i], i+1) sele..

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

조합문제이다. 순열과 비슷하면서도 다른데, 순열은 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 ..