파이썬 백준 15652번
실버3
https://www.acmicpc.net/problem/15652
15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 보기
문제 풀기
이전 문제 15651번에서 가능한 모든 숫자로 이루어진 수열을 찾는 코드에 조건을 추가.
수열에 새로이 추가되는 원소는 이전 원소보다 같거나 큰 수가 들어가야 하기때문에
i 로 for 반복문을 돌리면서 불러오는 재귀함수 fnDFS() 의 num_sequence 축적 원소들은 i 보다 작아질 수 없음.
즉, i 는 num_sequence 에 들어있는 최댓값 보다 작은 경우는 생각하지 않아도 됨.
ex) for 문에서 두번째 원소 i = 1 이 주어진, [2, 1, X] 의 경우 max(num_sequence) 는 2 이기에 if 문 작동 안 함. fnDFS() 작동 안 함.
코드 보기
import sys
inputdata = sys.stdin.readline
N, M = map(int, inputdata().split())
num_sequence = []
def fnDFS():
if len(num_sequence) == M:
print(*num_sequence)
return
for i in range(1, N + 1):
num_sequence.append(i)
if i == max(num_sequence):
fnDFS()
num_sequence.pop()
fnDFS()
# 3 3
# 1 1 1
# 1 1 2
# 1 1 3
# 1 2 2
# 1 2 3
# 1 3 3
# 2 2 2
# 2 2 3
# 2 3 3
# 3 3 3
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 10870 - 피보나치 수 5 (0) | 2022.09.22 |
---|---|
[Python] 백준 풀기 4949 - 균형잡힌 세상 (0) | 2022.09.21 |
[Python] 백준 풀기 15651 - N과 M (3) (0) | 2022.09.20 |
[Python] 백준 풀기 11866 - 요세푸스 문제 0 (0) | 2022.09.19 |
[Python] 백준 풀기 15650 - N과 M (2) (0) | 2022.09.19 |