망나니 AWOS의 일상
article thumbnail

문제 풀이

N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다.

  • 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열

쉽게 말해 N에 4, M에 2가 들어왔을 경우

1, 2, 3, 4 중에 2개를 고르면 아래의 그림과 같이 수열이 뽑힌다.

N : 4, M : 2

이와 같이 뽑아주는 permutations를 이용하면 된다. permutations에 대한 설명은 아래의 문제에서도 풀었기 때문에 생략

 

[python] 백준 8892번 팰린드롬

문제 풀이 내가 생각한 방법은 itertools라이브러리의 permutations(순열) 함수를 이용하는 것이었다. permutations에 대한 자세한 설명은 밑에 있다. 파이썬을 파이썬답게 - 순열과 조합 - combinations, permut.

begin-dev-awos.tistory.com

처음에 1부터 N까지의 리스트를 만들어주고 해당 리스트를 permutations로 돌려 순열을 뽑아낸다.

permutations는 순서쌍 즉, 튜플 형태로 결괏값을 반환하기 때문에 뽑아내야 할 출력값과는 조금 다르기 때문에

정규식을 이용해 숫자와 해당 튜플 사이의 공백만 뽑아내도록 하였다.

 

완성된 코드!!👍😊

import re
from itertools import permutations

N, M = map(int, input().split())
# N=4, M=2 일때 numbers = [1, 2, 3, 4]
numbers = list(range(1, N + 1))
# key=(1,2) (1,3) (1,4) (2, 1) --- (4, 1) (4, 2) (4,3)
for key in permutations(numbers, M):
	# 숫자나 공백이 아닌 것들은 빈문자로 처리
    print(re.sub(r'[^0-9\s]', '', str(key)))
profile

망나니 AWOS의 일상

@AWOS

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