본문 바로가기

알고리즘 공부/백준 > Python3

[백준 파이썬] #15651: N과 M(3)

www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

[정답]

 

1. 두 수를 입력받아 N,M을 정의한다.

2. 1부터 N까지의 자연수 중에서 고르는 문제니까 수 1~N을 list에 넣는다.

3. itertools 모듈의 product() 함수를 사용하여 중복 순열을 구한다.

( 주의할 점: 이전 permutations() 함수와 combinations() 함수는 두 번째 파라미터에 repeat을 안 적어도 되었지만, product() 함수의 경우 repeat를 꼭 적어주어야 한다. 안 적으면 오류 발생. )

4. for문을 돌면서 중복 순열을 차례대로 출력한다.

 

이 문제는 #15649:N과 M(1) & #15650:N과 M(2)의 연장선 문제이다.

#15649:N과 M(1) → 중복을 제외한 순열 구하는 문제 → permutations() 함수 사용 

#15650:N과 M(2) → 중복을 제외한 순서 상관없는 조합 구하는 문제 → combinations() 함수 사용

#15651:N과 M(3) → 중복 순열 구하는 문제 → product() 함수 사용

 


[itertools 모듈에 대한 자세한 설명]

https://heewon9809.tistory.com/193

 

백준 #15649

www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열

heewon9809.tistory.com