https://www.acmicpc.net/problem/15654
백트레킹 개념을 이용하여 문제 풀이를 진행했다.
이때 결과값은 정렬된 상태로 출력해주어야 하므로, go 함수를 호출하기 전에 li를 정렬해준다.
M개를 추출을 해야하는 상황에서, arr의 길이가 M과 같아지는 경우(추출 수 충족) 출력 형식에 맞게 출력을 진행해준다.
만약 아직 조건을 충족시키지 못했다면, 아직 arr에 아무것도 없거나 1,1 과 같이 중복 추출이 일어나지 않는 경우
li의 인자를 하나씩 넣어서 go 함수의 재귀호출을 진행해 조건을 만족하는 경우 결과값을 출력한다.
input = __import__('sys').stdin.readline
def go(arr):
if len(arr) == M:
print(' '.join(map(str, arr)))
return
for i in range(N):
if len(arr) == 0 or li[i] not in arr:
arr.append(li[i])
go(arr)
arr.pop()
N, M = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
go([])
'Koala - 9기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/node.js] 18429번 근손실 (0) | 2023.01.08 |
---|---|
[BOJ/Python] 1051 숫자 정사각형 (0) | 2023.01.08 |
[백준/Python] 20410번 추첨상 사수 대작전! (Easy) (0) | 2023.01.08 |
[백준/C++] 14888번 연산자 끼워넣기 (0) | 2023.01.07 |
[백준/python] 6603번 로또 (0) | 2023.01.07 |