| 제출 1 |
# 백트래킹
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
nums = sorted(list(map(int, input().split())))
keep = []
def recur(x):
if x == M:
print(*keep)
return
for i in range(len(nums)):
keep.append(nums[i])
recur(x+1)
keep.pop()
recur(0)
: 백트래킹 이용한 풀이
: nums의 모든 값마다 nums의 처음부터 끝까지 짝 지어줘야하기에 for문의 인덱스 범위를 전체로 설정했다.
: 중복을 허용하며 본인과도 겹쳐도 되기에 중복 여부를 확인하는 과정이 없다.
| 제출 2 |
# 중복 순열 product 사용
import sys
input = sys.stdin.readline
from itertools import product
N, M = map(int, input().split())
nums = sorted(list(map(int, input().split())))
for item in product(nums, repeat=M):
print(*item)
: 중복 순열 메서드 product 사용
: 주의할 점, product의 두 번째 인자는 repeat="고를숫자" 로 해줘야한다. 그냥 int 값 주면 안 된다.
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
[ BOJ / 파이썬 ] 15657 N과M(9) (*다시 체크 요망, 덜 이해한듯*) (0) | 2022.08.30 |
---|---|
[ BOJ / 파이썬 ] 15657 N과M(8) (0) | 2022.08.29 |
[ BOJ / 파이썬 ] 15655 N과 M (6) (0) | 2022.08.29 |
[ BOJ / 파이썬 ] 15654 N과M (5) (0) | 2022.08.26 |
[ BOJ / 파이썬 ] 15652 N과 M(4) (0) | 2022.08.26 |