Algorithm Problems

[백준] [Python] 15655번 N과 M (6) - 백트래킹 - [대표예제]

WakaraNai 2021. 5. 16. 01:13
728x90
반응형

 

https://www.acmicpc.net/problem/15655

 

15655번: N과 M (6)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net

 

 

Python

n, m = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()

nums = []

def back(k, idx):
    if k == m:
        print(' '.join(map(str, nums)))
        return
    for i in range(idx, n):
            nums.append(arr[i])
            back(k+1, i+1)
            nums.pop()
            
back(0, 0)

 

 

오답

문자열을 그대로 정렬하면 사전순 배열이 되어 오답

꼭 숫자로 만들어 정렬한 뒤, join할 때 str로 바꿔주자

import sys
n, m = map(int, sys.stdin.readline().split())

####
arr =  sys.stdin.readline().split()
arr.sort()
####

visit = [0]*n
nums = []
def back(k,idx):
    if k==m:
        print(" ".join(nums))
        return
    for i in range(idx,n):
            nums.append(arr[i])
            back(k+1,i+1)
            nums.pop()
back(0,0)

 

728x90
반응형