https://www.acmicpc.net/problem/15654
15654번: N과 M (5)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
풀이
문제를 보았을때 알수있는 힌트
이 문제는 정해진 숫자를 차례대로 출력 될수있게 하면 되는 문제이다.
백트래킹과 dfs를 이용해서 풀면 쉽게 풀린다. 또한 그냥 itertools의 permutations을 통해 풀면 간단하게 풀수있다.
# dfs와 백트래킹
import sys
input= sys.stdin.readline
def dfs(x,y):
if m==y:
print(*x)
else:
for i in range(0,n):
if n_list[i] not in x:
x.append(n_list[i])
dfs(x,y+1)
x.pop()
n,m = map(int,input().split())
n_list = list(map(int,input().split()))
n_list.sort()
for i in range(0,n):
temp=[n_list[i]]
dfs(temp,1)
# itertools의 permutations
import sys
from itertools import permutations
input= sys.stdin.readline
n,m = map(int,input().split())
n_list = list(map(int,input().split()))
n_list.sort()
result =list(permutations(n_list,m))
for i in result:
print(*i)
두가지 방법 모두 결과는 정답으로 나온다.
https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon15654.py
GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리
코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.
github.com
'Coding Test > baekjoon' 카테고리의 다른 글
[백준 11286] 절대값 힙 - python (solved.ac - 실버 1) (0) | 2022.06.11 |
---|---|
[백준 9465] 스티커 - python (solved.ac - 실버 1) (0) | 2022.06.10 |
[백준 14500] 테트로미노 - python (solved.ac - 골드 5) (0) | 2022.06.08 |
[백준 15650] N과 M (2) - python (solved.ac - 실버 3) (0) | 2022.06.08 |
[백준 11660] 구간 합 구하기 - python (solved.ac - 실버 1) (0) | 2022.06.07 |