본문 바로가기
백준

[백준] 15649번 : N과 M (1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 31.
728x90
반응형

 

 

15649번: N과 M (1)

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 1부터 N까지 수 중, M개를 뽑아 나열하는 것과 동일하다.

하여 permutations() 함수를 활용하여 순열의 결과를 저장하고 이를 하나씩 출력하면 되는 문제이다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. permutations() 함수를 사용하기 위해 permutstions 모듈을 불러온다. from itertools import permutations
  3. N과 M을 입력받는다. N, M = map(int, sys.stdin.readline().split())
  4. 1부터 N까지 수가 저장되어 있는 리스트를 생성한다. li = list(i for i in range(1, N + 1))
  5. 가능한 순열의 결과를 저장할 변수를 생성하고 permutations() 함수를 사용하여 1부터 N까지 숫자 중 M개를 뽑아 나열할 수 있는 경우를 모두 구하여 리스트로 저장한다. result = list(permutations(li, M))
  6. 모든 순열의 결과를 하나씩 추출하고 for i in result
  7. 추출한 순열을 출력하기 위해 원소를 하나씩 추출하여 for j in i
  8. 공백을 기준으로 한 줄에 출력하고 print(j, end=' ')
  9. 한 경우를 출력했으면 줄 바꿈을 해준다. 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
반응형