[python] 백준 15649번 N과 M (1)알고리즘/백준2022. 3. 16. 23:33
Table of Contents
문제 풀이
N과 M의 입력이 주어지는데 N과 M의 조건은 아래와 같다.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
쉽게 말해 N에 4, M에 2가 들어왔을 경우
1, 2, 3, 4 중에 2개를 고르면 아래의 그림과 같이 수열이 뽑힌다.
이와 같이 뽑아주는 permutations를 이용하면 된다. permutations에 대한 설명은 아래의 문제에서도 풀었기 때문에 생략
처음에 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)))
'알고리즘 > 백준' 카테고리의 다른 글
[python] 백준 15651번 N과 M (3) (0) | 2022.03.19 |
---|---|
[python] 백준 15650번 N과 M (2) (0) | 2022.03.17 |
[python] 백준 20044번 Project Teams (4) | 2022.03.11 |
[python] 백준 8892번 팰린드롬 (0) | 2022.03.10 |
[python] 백준 17219번 비밀번호 찾기 (0) | 2022.03.09 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊