[백준] 15655번 (python 파이썬) N과 M(6)
2021. 3. 23. 03:07ㆍ발돋움/알고리즘
728x90
반응형

n, m = map(int, input().split())
n_list = sorted(map(int, input().split()))
def num(idx, n, m, check):
if idx == m:
print(' '.join(map(str,a)))
for x in n_list:
if (idx != 0) & (check >= x):
continue
a.append(x)
num(idx + 1, n, m, x)
a.pop()
a = []
num(0, n, m, n_list[0])
728x90
* 받을때 오름차순으로 정렬해준다.
* 문제의 입,출력 예시를 잘보면 앞의 인덱스보다 뒤의 인덱스 값이 커야함
* idx는 수열의 길이로 m개를 골랐을때 join으로 공백을 넣어 출력해준다.
* 함수의 두번째 if문을 보면 idx != 0과 check >= x조건이 있는데
check >= x는 중복방지,
idx != 0는 num함수를 처음 실행할때 리스트의 첫 객체를 넣어줬기 때문에 첫 실행때 중복에서 걸러짐 방지이다.
list의 객체와 str(혹은 int)끼리 비교 연산이 불가하여 에러가 난다.
변수로 담아줘도 똑같음
그렇기 때문에 num함수를 처음 실행할때 리스트의 첫 값을 넣어줬다.
* 받을때 int로 변환해주지 않으면 1241과 13을 입력시 ['1241', '13']처럼 잘못 정렬된다.
* 재귀함수 작동원리가 이해가 안간다면 아래를 참고(알아보기 힘들 수 있음)!
백준 15651 python ,N과M(3)
n, m = map(int, input().split()) result = [] def num(idx, n, m): if idx == m: print(' '.join(map(str, result))) return for i in range(1, n + 1): result.append(i) num(idx + 1, n, m) result.pop() num..
happytum.tistory.com
728x90
반응형
'발돋움 > 알고리즘' 카테고리의 다른 글
| [백준] 1476번 (python 파이썬) 날짜계산 (0) | 2021.03.23 |
|---|---|
| [백준] 3085번 (python 파이썬) 사탕게임 (0) | 2021.03.23 |
| [백준] 15650번 (python 파이썬) N과 M(2) (0) | 2021.03.23 |
| [백준] 15651번 (python 파이썬) N과M(3) (0) | 2021.03.23 |
| [백준] 14500번 (python 파이썬) 테트로미노 (0) | 2021.03.22 |