티스토리 뷰
문제 링크
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 풀이
n, m = map(int, input().split())
case = []
def recursive():
if len(case) == m:
print(' '.join(map(str, case)))
return
for i in range(1, n + 1):
if i in case:
continue
case.append(i)
recursive()
case.pop()
recursive()
*key point: 재귀함수를 이용하여 문제를 푼다. 1 ~ n까지의 반복되는 for문 안에서의 i부터 시작하여 중복되지 않는 수로 다음 수가 정해지고, 전체 길이가 m을 만족하면 해당 case print 된다. 하나의 case가 출력되면 pop되어 사라지고 다시 반복문의 다음 스텝이 시작된다.
'What I Learned > Algorithm Practice' 카테고리의 다른 글
[programmers - python] Lv.0: n의 배수 고르기 (0) | 2022.12.13 |
---|---|
[백준 - python] 15650번: N과 M (2) (0) | 2022.12.12 |
[백준 - python] 2004번: 조합 0의 개수 (0) | 2022.12.10 |
[백준 - python] 1010번: 다리 놓기 (0) | 2022.12.09 |
[백준 - python] 9375번: 패션왕 신해빈 (1) | 2022.12.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 25192
- programmer
- 항해 플러스
- 1269
- 24313
- til
- 항해+
- 2903
- 벡준
- 2053
- 24723
- 코육대
- 5597
- 26069
- 24060
- 17103
- 13241
- 25501
- 4134
- 2587
- Wil
- 백준
- 13909
- Programmers
- SQL
- Python
- 10807
- 20920
- MySQL
- 2738
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함