Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 |
Tags
- 프로그래머스
- react with typescript
- 자바 삼항연산자
- 자바 공배수
- Til
- 변수
- 자바
- 자바 향상된 for문
- 항해99 2기
- MySQL
- 자바 for문
- 조코딩
- 정보처리기사실기
- 이클립스 DB연동
- 자바 조건문
- 자바 public
- 항해99
- java
- react ag grid
- 자바 스캐너
- 자바 자동캐스팅
- 타입스크립트
- 자바 강제 캐스팅
- 자바 switch문
- 자바 반복문
- 자바 while문
- Vue3
- 자바 구구단 출력
- TypeScript
- 자바 if문
Archives
- Today
- Total
뇌 채우기 공간
[백준] 15650 N과 M(2) 파이썬 풀이 (백트래킹) 본문
문제
- 1~N까지 자연수 중에서 중복없이 M개를 고른 수열
- 고른 수열은 오름차순이어야한다.
문제 풀이
<백트래킹>
- 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 최적화 문제와 결정 문제를 푸는 방법이 됩니다.
- 어떤 노드의 유망성 점검 후 , 유망하지 않으면 그 노드의 부모 노드로 되돌아간 후 다른 자손 노드를 검색
- 1부터 시작해서 그 숫자와 다음 숫자를 배열에 넣고 ,
- 배열의 길이가 m이 되면 print하고 맨 뒤의 숫자를 pop한다.
- 그 다음 숫자를 배열에 넣고 배열의 길이가 m이 되면 print하고 맨 뒤의 숫자를 pop한다
- ...
코드
n,m = list(map(int,input().split())) #1234 2
s = []
def dfs(start): #start =
# print(f'dfs 호출시작, start = {start}')
if len(s)==m:
print(' '.join(map(str,s)))
return
for i in range(start,n+1):
if i not in s:
s.append(i)
# print(f's.append = {s}')
dfs(i+1)
s.pop()
# print(f's.pop = {s}')
# print(f'dfs호출 끝, start = {start}')
dfs(1)



728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
| [백준] 2579 계단 오르기 파이썬 풀이 (동적 계획법) (0) | 2021.06.24 |
|---|---|
| [백준] 9663 N-Queen 파이썬 풀이 (백트래킹) (1) | 2021.06.24 |
| [백준] 2630 색종이 만들기 파이썬 (분할정복) (0) | 2021.06.23 |
| [백준] 2108 통계학 파이썬 풀이 (정렬) (0) | 2021.06.23 |
| [백준] 1149 RGB거리 파이썬 풀이(동적 계획법) (0) | 2021.06.23 |