알고리즘/DFS, BFS, 시뮬, 백트래킹
[백준] N과 M (1~4)
VIPeveloper
2021. 9. 19. 17:58
728x90
반응형
(1) 1~N까지 자연수 중, 중복 없이 M개를 고른 수열
- nPm 문제
n, m = map(int,input().split())
arr = []
def solution():
if len(arr) == m:
print(' '.join(map(str,arr)))
return
for i in range(1,n+1):
if i not in arr:
arr.append(i)
solution()
arr.pop()
solution()
(2) 1~N까지 자연수 중, 중복 없이 M개를 고른 수열 + 오름차순
- nCm 문제
n, m = map(int,input().split())
arr = []
def solution(start):
if len(arr) == m:
print(' '.join(map(str,arr)))
return
for i in range(start,n+1):
if i not in arr:
arr.append(i)
solution(i+1)
arr.pop()
solution(1)
(3) 1~N까지 자연수 중, 중복을 포함하여 M 개를 고른 수열
- 같은 수를 여러번 골라도 된다.
-mㅠn 문제
n,m = map(int,input().split())
arr = []
cnt = 0
def solution():
global cnt
if len(arr) == m:
cnt += 1
print(' '.join(map(str,arr)))
return
for i in range(1,n+1):
arr.append(i)
solution()
arr.pop()
solution()
print(cnt)
(4) 1~N까지 자연수 중, 중복을 포함하여 M개를 고른 수열 + 오름차순
- 먼문젠지 잘 모르겠음
n,m = map(int,input().split())
arr = []
cnt = 0
def solution(start):
global cnt
if len(arr) == m:
cnt += 1
print(' '.join(map(str,arr)))
return
for i in range(start,n+1):
arr.append(i)
solution(i)
arr.pop()
solution(1)
print(cnt)
728x90
반응형