본문 바로가기
알고리즘

백준_15649_N과 M(1)

by 매화of사군자 2020. 1. 13.

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

 

15649번: N과 M (1)

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

www.acmicpc.net

해결 방법 : 문제 설명을 보면 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열을 구하는 문제인 것을 알 수 있다.

이것을 잘 생각해보면 학창시절에 배웠던 수학이 하나 떠오르는데 그것은 바로 "서로 다른 N개에서 M개를 구하는 방법 즉 "순열"" 이다. 파이썬에서 순열을 구하는 permutation 함수가 존재한다. 그것을 이용하여 풀었다.

 

코드

더보기

import itertools 

a, b = map(int, input().split()) 

table = [] 

for i in range(a): 
    table.append(str(i+1)) 

p_list = list(map(' '.join, itertools.permutations(table,b))) 

for i in p_list: 
    print(i)

'알고리즘' 카테고리의 다른 글

백준_4963_섬의 개수  (0) 2020.01.20
백준_1389_케빈 베이컨의 6단계 법칙  (0) 2020.01.17
백준_2178_미로 탐색  (0) 2020.01.16
백준_7576_토마토  (0) 2020.01.15
서로소 집합(disjoint set) 연습  (0) 2020.01.14

댓글