반응형
문제 바로 가기
풀이
- 사용 언어 : Python
- 풀이한 날짜 : 2022-02-10
n, m = tuple(map(int, input().split()))
lst = []
def print_lst():
for elem in lst:
print(elem, end=" ")
print()
def choose(curr_num):
if curr_num == m + 1:
print_lst()
for i in range(1, n + 1):
if len(lst) >= 1 and lst[-1] >= i:
continue
lst.append(i)
choose(curr_num + 1)
lst.pop()
choose(1)
풀이 로직
- 재귀 함수를 이용하는 Backtracking 방법으로 문제를 해결하였다.
- 우선 숫자를 한 개 뽑고 이를 리스트에 삽입한 후 같은 함수를 m개의 숫자를 뽑을 때까지 반복 호출한다.
- 재귀 함수 호출 이후엔 pop 메소드를 통해 리스트를 원래대로 복귀시켜 놓아야 한다.
- 오름차순으로 수를 뽑아야 하므로, 바로 이전에 뽑았던 수보다 같거나 작은 수를 뽑는 과정은 continue문을 통해 생략한다.
문제 접근 과정 및 느낀점
- Backtracking 유형의 대표 문제
- 재밌다.
반응형
'◼ PS Note > 백준' 카테고리의 다른 글
[백준] 1107번 : 리모컨 (🥇골드 5) (Python) (2) | 2024.01.10 |
---|---|
[백준] 7576번 : 토마토 (🥇골드 5) (Python) (0) | 2023.02.22 |
[백준] 1929번 : 소수 구하기 (🥈실버 3) (Python) (0) | 2023.02.22 |
[백준] 1063번 : 킹 (🥈실버 4) (Python) (0) | 2023.01.22 |
[백준] 1929번 : 소수 구하기 (🥈실버 3) (0) | 2023.01.22 |