📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 15650 N과 M (2) 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/15650

 

15650번: N과 M (2)

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

www.acmicpc.net


문제 해석 : 1~N의 수 중 중복없이 오름차순으로 M개의 수를 선택하는 경우를 모두 보이는 문제이다.

 

문제 풀이 : Python itertools - combinations에서 제공하는 것과 동일한 기능이기에 이를 활용한다.

 

가능한 다른 풀이 : 원리를 이용해서 직접 구현 할 수 있다. 이때는 for문을 통해서 오름차순인지 확인하고 중복된지를 확인하면서 만들면 된다.


풀이 코드

from itertools import combinations

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

arr = [i for i in range(1, N+1)]

answer = list(combinations(arr, M))

for element in answer:
    for element2 in element:
        print(element2, end = " ")
    print()

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.