코딩 테스트/백준
[백준15651] N과 M (3)
땅어
2020. 3. 14. 15:25
728x90
300x250
문제
https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.
www.acmicpc.net
생각의 흐름
중복선택이 가능하다는 점을 유념해야 한다.
깨달은 점
파이썬 itertools에 product라는 함수가 있다.
product(arr, repeat=M)과 같이 첫번째 인자는 리스트, 두번째 인자는 반복 횟수이다.
예컨대, arr = [1,2,3], M=2라면 (1,1)과 같이 두 개를 뽑는데 중복해서 뽑는 경우를 포함한다.
코드
from itertools import product
N,M = map(int, input().split())
arr = list(range(1,N+1))
# 중복을 허용하는 순열
for case in product(arr, repeat=M):
print(' '.join(map(str, case)))
728x90
300x250