설명
1 ~ N까지 자연수 중에서 M개를 고른 수열을 나열해서 출력하라는 문제이다. 또한 같은 수를 골라도 된다.
풀이
풀이는 간단하다. 1부터 N까지 수를 리스트에 다 담는다. 중복된 숫자도 들어가야 하니 중복순열을 사용한다.
중복순열은 순열과는 약간 다르게, 같은 숫자를 중복해서 담을 수 있다.
✎ itertools 라이브러리에서 product 함수를 import 한다.
☐ product(list, repeat = 뽑을 개수)
Solution
import sys
input = sys.stdin.readline #입출력 향상
N, M = map(int, input().split())
list = []
for i in range(1, N+1):
list.append(i)
from itertools import product
for i in product(set(list), repeat = M): #set을 쓰지 않으면 오류, 혹은 list(product(list)) 이렇게도 사용한다.
for j in i:
print(j, end = ' ')
print(sep = '\n')
※ 알고리즘 분류를 보니 백트래킹으로도 풀 수 있는 문제인가 보다.
'BOJ 코딩테스트 > Silver' 카테고리의 다른 글
BOJ 2667번 : 단지번호붙이기 (Python/Silver 1) (0) | 2023.05.16 |
---|---|
BOJ 2178번 : 미로 탐색 (Python/Silver 1) (1) | 2023.05.13 |
BOJ 11725번 : 트리의 부모 찾기 (Python/Silver 2) (0) | 2023.05.09 |
BOJ 9012번 : 괄호 (Python/Silver 4) (0) | 2023.05.03 |
BOJ 10773번 : 제로 (Python/Silver 4) (0) | 2023.05.02 |