서론
이번 포스팅에서는 BOJ 15649 N과M(1) 문제를 풀어보도록 하겠다. 해당 문제를 보려면 여기로 가면 된다. 또한 어떻게 이 문제를 접근했고, 그렇게 푼 코드는 어떻게 되는 지 이어서 서술할 예정이다.
BOJ 15649 풀이과정
BOJ 15649 N과 M을 보면, 1부터 N까지 길이가 M인 수열을 오름차순으로 나열하라고 되어있다. 그렇기에 첫번째로 1부터 N까지 자연수가 들어 있는 리스트를 만들었다. 또한 길이가 M인 수열이라는 걸 처음 봤을 때 수열에 꽂혀서 규칙이 있는 줄 알았는데 그냥 나열한 수준의 수열을 원한 거였다. 그렇기에 perumutaion이라고 판단했다. arr에서 M개를 뽑는데 순서에 따라 다른걸로 취급하는 조합이기 때문이다. 마지막으로 문제에서 요구한것은 오름차순 정렬이다. 처음에는 반복문을 돌면서 가장 오른쪽에 있는 원소부터 lambda x : x[i]를 사용하며 하나하나 오름차순으로 정렬했는데, 그럴 필요가 없었다. 파이썬 sort는 문제에서 요구하듯 첫번째 원소 뿐 아니라 모든 원소를 사전순으로 정렬해주기 때문이다. 이렇게 원소를 정렬한 뒤, res에 있는 원소들을 join함수를 사용해서 문제에서 요구한 방식으로 한 줄 한 줄 print를 해줬다.
BOJ 15649 풀이 코드
from itertools import permutations
n, m = map(int,input().split())
arr = [i for i in range(1,n+1)]
res = list(permutations(arr, m))
res.sort()
for tup in res:
print(" ".join(map(str, tup)))
'IT, Computer' 카테고리의 다른 글
OSError: [WinError 10014] 호출에 대한 포인터 인수를 사용하려는 동안 시스템에서 잘못된 포인터 주소를 감지했습니다. 해결법 (0) | 2025.03.01 |
---|---|
[백준] BOJ 1012, 유기농 배추 파이썬 Python (0) | 2025.02.12 |
[백준] BOJ 11399, ATM Python (0) | 2025.02.09 |
[백준] BOJ 12865, 평범한 배낭 파이썬 Python (0) | 2025.02.07 |
[백준] BOJ1463, 1로 만들기 (0) | 2025.02.05 |