https://www.acmicpc.net/problem/15654
์์ด๋์ด
1. ๋ฐฑํธ๋ํน
- ์ด๋ฏธ N๊ณผ M ๋ฌธ์ ๋ฅผ ํ์ด๋ด์ ๋ฐ๋ก ๋ ์ฌ๋๋ค.
- ๊น์ด๊ฐ M์ด ๋ ๋๋ง๋ค ์ฃผ์ด์ง ์ซ์๋ค์ ํ์ํ๋ฉด ๋๋ค.
- ์ด ๋ฌธ์ ์์๋ ์์ด, ์ค๋ณต๋์ง ์์ ์ซ์๋ค์ ๋์ดํด์ผ ํ๋ฏ๋ก ์ด๋ฏธ ์ถ๊ฐ๋ ์ซ์๊ฐ ์์ผ๋ฉด continue๋ก ๋๊ฒจ์ค๋ค.
์ ์ฒด ์ฝ๋
N, M = map(int, input().split())
numbers = [int(x) for x in input().split()]
numbers.sort()
def backtracking(depth):
if depth == M:
print(' '.join(map(str,box)))
return
for i in range(N):
if numbers[i] in box:
continue
box.append(numbers[i])
backtracking(depth + 1)
box.pop()
box = []
backtracking(0)
์ฝ๋ ์ค๋ช
numbers.sort()
def backtracking(depth):
if depth == M:
print(' '.join(map(str,box)))
return
for i in range(N):
if numbers[i] in box:
continue
box.append(numbers[i])
backtracking(depth + 1)
box.pop()
box = []
backtracking(0)
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์๋ ์ซ์ ์์๋๋ก ์ซ์๋ฅผ ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋น ๋ฆฌ์คํธ(box)๋ฅผ ์ฌ์ฉํด ์ซ์๋ฅผ ๋ฃ์ด์ค๋ค.
์ด๋ฏธ ๋ฃ์ ์ซ์๋ฉด continue๋ฅผ ์ฌ์ฉํด ๋ค์ ์ซ์๋ก ๋์ด๊ฐ๋ค.
์์ด์ ๊ธธ์ด๊ฐ M์ด ๋๋ฉด(depth == M) box๋ฆฌ์คํธ์ ์๋ ์์ด์ ์ถ๋ ฅํด์ฃผ๊ณ return ํ๋ค.
returnํ ๋ฃ์๋ ์ซ์๋ฅผ ๋ค์ ๋นผ์ฃผ๋ฉด ๋๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1504 ํน์ ํ ์ต๋จ ๊ฒฝ๋ก (python ํ์ด์ฌ) (0) | 2022.07.28 |
---|---|
[๋ฐฑ์ค] 12100 2048(easy) (python ํ์ด์ฌ) (0) | 2022.07.25 |
[๋ฐฑ์ค] 1202 ๋ณด์ ๋๋ (python ํ์ด์ฌ) (0) | 2022.07.11 |
[๋ฐฑ์ค] 13913 ์จ๋ฐ๊ผญ์ง 4 (python ํ์ด์ฌ) (0) | 2022.07.10 |
[๋ฐฑ์ค] 12851 ์จ๋ฐ๊ผญ์ง 2 (python ํ์ด์ฌ) (0) | 2022.07.10 |