- 문제 링크: https://www.acmicpc.net/problem/15649
- 백준 15649번
- 파이썬
Q1) 문제를 어떻게 이해했나요?
A1) 1부터 N까지의 수 중에서 M개를 중복 없이 뽑아서 만든 수열을 모두 출력해야 해요.
Q2) 문제를 어떻게 풀 예정인가요?
A2)
DFS(백트래킹)을 사용해 수열을 하나씩 만들어가며 탐색합니다.
이미 선택한 숫자는 visited 배열로 중복 선택을 막습니다.
수열의 길이가 M에 도달하면 출력합니다.
사전 순 출력을 위해 숫자 1부터 N까지 오름차순 탐색을 합니다.
def solution(N, M):
visited = [False] * (N + 1)
def dfs(path):
if len(path) == M:
print(' '.join(map(str, path)))
return
for i in range(1, N + 1):
if not visited[i]:
visited[i] = True
dfs(path + [i])
visited[i] = False # 백트래킹
dfs([])
# 예시 입력
N, M = map(int, input().split())
solution(N, M)
- itertools.permutations
permutations(iterable, r)는 iterable에서 r개의 요소를 뽑아 만들 수 있는 모든 순열을 반환해요.
중복 없이 뽑기 때문에, 이 문제의 조건과 딱 맞아요.
from itertools import permutations
N, M = map(int, input().split())
for p in permutations(range(1, N + 1), M):
print(' '.join(map(str, p)))
[추천 강의✨]
38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의
현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,
www.inflearn.com
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인
현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.
www.inflearn.com
728x90
반응형
'Algorithm' 카테고리의 다른 글
| [카카오 코테 2019 | python] 크레인 인형뽑기 게임 ✅ (1) | 2025.06.23 |
|---|---|
| [백준] Input 처리 방법 (0) | 2025.06.23 |
| [카카오 코테 2018 | python] 비밀지도 (0) | 2025.06.19 |
| [카카오 코테 2018 | python] [1차] 다트 게임 (0) | 2025.06.19 |
| [카카오 코테 2023 | python] 개인정보 수집 유효기간 (0) | 2025.06.18 |