알고리즘/백준
[python] 백준 15649번 N과 M (1)
펄찌
2022. 3. 16. 23:33
문제 풀이
N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
쉽게 말해 N에 4, M에 2가 들어왔을 경우
1, 2, 3, 4 중에 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)))
반응형