Today Sangmin Learned
728x90

1. 링크

https://www.acmicpc.net/problem/15654

2. 난이도(solved.ac 참고)

실버3

3. 풀이

 

# https://www.acmicpc.net/problem/15654
from itertools import permutations
import sys
f = sys.stdin.readline
n, m = map(int, f().split())
a = list(map(int, f().split()))
for i in permutations(sorted(a), m):
if len(i) == 1:
print(i[0])
else:
print(*i)
view raw N과M(5).py hosted with ❤ by GitHub

 

다르게 풀 수도 있겠지만, 나는 permutations(순열) 모듈을 불러와서 사용했다. 순열은 수학에서 nPr이다. n개 중에 r개를 뽑는 경우의 수이다.

<python />
from itertools import permutations a = [1, 2, 3, 4] for i in permutations(a, 2): print(i) # (1, 2) # (1, 3) # (1, 4) # (2, 1) # (2, 3) # (2, 4) # (3, 1) # (3, 2) # (3, 4) # (4, 1) # (4, 2) # (4, 3)

사전 순서로 증가하는 순으로 출력해야 되었기 때문에 a를 정렬한 값을 기준으로 순열을 돌렸다.

 

기본적으로 튜플의 형태로 출력이 되기 때문에 스페이스바로 값을 구분하는 것 외에 모든 요소를 무시하는 *i로 출력을 해줬다. 순열의 값이 1개일 경우에는, 그러니까 nPr에서 r이 1인 경우는 그냥 i[0]만 출력하게 했는데, 이는 값이 1개라면 (1,) 와 같은 형태로 출력이 되기 때문에 *i로도 출력이 불가능하다(두 개의 요소를 필요로 하기 때문이다). 그래서 그냥 i[0]만 출력하게 한 것이다.

profile

Today Sangmin Learned

@steadily-worked

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!