본문 바로가기

IT/Python

[백준] 15663~15666번 N과 M[9~12] [Python] - 순열, 조합, 중복

728x90

백준 문제 사이트

N과 M[9], N과 M[10], N과 M[11], N과 M[12]

 

중복된 원소가 포함되기도 한 N개의 자연수가 주어졌을 때,

M개의 순열, 조합, 중복 순열, 중복 조합을 구하는 문제

 

N과 M[7, 8]리뷰

https://savvy0402.tistory.com/192

 

dict.fromkeys$($딕셔너리의 키 값들, 현재 생성할 딕셔너리의 일괄적으로 들어가게 될 값$)$

값을 안 넣으면 모든 key의 값이 None으로 저장됨

 

N과 M[9]

from sys import stdin
from itertools import permutations
input = stdin.readline

N, M = map(int, input().split())
s = sorted(input().rstrip().split(), key=int)
# print("\n".join(map(" ".join, {pm:None for pm in permutations(s, M)})))
print("\n".join(map(" ".join, dict.fromkeys(permutations(s, M)))))

 

N과 M[10]

from sys import stdin
from itertools import combinations
input = stdin.readline

N, M = map(int, input().split())
# 주어진 값은 문자로 유지하지만, key에 int를 넣어서 숫자인 것처럼 정렬
s = sorted(input().rstrip().split(), key=int)
print("\n".join(map(" ".join, {cm:None for cm in combinations(s, M)})))
# print("\n".join(map(" ".join, dict.fromkeys(combinations(s, M)))))

# 처음부터 숫자로 저장하는 코드
# s = map(int, input().split())
# for cb in sorted(set(combinations(sorted(s), M))):
#     print(*cb)

 

N과 M[11]

from sys import stdin
from itertools import product
input = stdin.readline

N, M = map(int, input().split())

# s = sorted(input().rstrip().split(), key=int)
# print("\n".join(map(" ".join, {pm:None for pm in product(s, repeat=M)})))
# print("\n".join(map(" ".join, dict.fromkeys(product(s, repeat=M)))))

s = sorted(set(input().rstrip().split()), key=int)
print("\n".join(map(" ".join, product(map(str, s), repeat=M))))

 

N과 M[12]

from sys import stdin
from itertools import combinations_with_replacement
input = stdin.readline

N, M = map(int, input().split())

# s = sorted(input().rstrip().split(), key=int)
# print("\n".join(map(" ".join, {cm:None for cm in combinations_with_replacement(s, M)})))
# print("\n".join(map(" ".join, dict.fromkeys(combinations_with_replacement(s, M)))))

s = map(int, input().split())
for cb in sorted(set(combinations_with_replacement(sorted(s), M))): print(*cb)

# s = sorted(set(input().rstrip().split()), key=int)
# print("\n".join(map(" ".join, combinations_with_replacement(map(str, s), M))))