백준
[백준] 15649번 : N과 M (1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 31. 14:11
728x90
반응형
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
1. 문제 설명
2. 풀이과정
해당 문제는 1부터 N까지 수 중, M개를 뽑아 나열하는 것과 동일하다.
하여 permutations() 함수를 활용하여 순열의 결과를 저장하고 이를 하나씩 출력하면 되는 문제이다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- permutations() 함수를 사용하기 위해 permutstions 모듈을 불러온다. from itertools import permutations
- N과 M을 입력받는다. N, M = map(int, sys.stdin.readline().split())
- 1부터 N까지 수가 저장되어 있는 리스트를 생성한다. li = list(i for i in range(1, N + 1))
- 가능한 순열의 결과를 저장할 변수를 생성하고 permutations() 함수를 사용하여 1부터 N까지 숫자 중 M개를 뽑아 나열할 수 있는 경우를 모두 구하여 리스트로 저장한다. result = list(permutations(li, M))
- 모든 순열의 결과를 하나씩 추출하고 for i in result
- 추출한 순열을 출력하기 위해 원소를 하나씩 추출하여 for j in i
- 공백을 기준으로 한 줄에 출력하고 print(j, end=' ')
- 한 경우를 출력했으면 줄 바꿈을 해준다. print()
반응형
3. 소스코드
import sys
from itertools import permutations
N, M = map(int, sys.stdin.readline().split())
li = list(i for i in range(1, N + 1))
result = list(permutations(li, M))
for i in result:
for j in i:
print(j, end=' ')
print()
728x90
반응형