728x90
나의 풀이)
n, m = map(int, input().split())
answer = list(map(int, input().split()))
result = []
answer.sort()
def dfs():
if len(result) == m:
print(*result)
return
for ans in answer: #1
if ans in result:
continue
if len(result) != 0 and result[-1] >= ans:
continue
result.append(ans)
dfs()
result.pop()
dfs()
#1 : 1~n을 돌려주기 싫어서 만든 나의 풀이 하지만 깔끔하지 못하다는 생각이 든다.
다른 풀이)
n, m = map(int, input().split())
answer = list(map(int, input().split()))
result = []
answer.sort()
def dfs(depth):
if len(result) == m: #1
print(*result)
return
for i in range(depth, n): #2
if answer[i] not in result: #3
result.append(answer[i])
dfs(i + 1)
result.pop()
dfs(0)
#1 : 깊이가 아닌 길이로 탈출조건을 정리
#2 : result에 들어가 있는 수보다는 큰 수가 들어와야 하므로 range(depth, n)
#3 : 이미 들어가 있는 수가 또 들어가지 않게 막는 역할
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 15657 파이썬(python) : N과 M (8) (0) | 2022.07.07 |
---|---|
[백준] 15656 파이썬(python) : N과 M (7) (0) | 2022.07.07 |
[백준] 15654 파이썬(python) : N과 M (5) (0) | 2022.07.06 |
[백준] 10815 파이썬(python) : 숫자 카드 (0) | 2022.07.06 |
[백준] 18870 파이썬(python) : 좌표 압축 - (★) (0) | 2022.07.06 |