[BOJ] 15657. N๊ณผ M (8)(python)
๐๋ฌธ์
๐ช์์ด๋์ด
๋น๋ด๋ฆผ์ฐจ์ ๋ฐฐ์ด
arr[i-1] <= arr[i]๋ก ์ ๋ ฌ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.๋ถ๋ถ ์์ด ๋ง๋ค๊ธฐ
๋น๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์๊ธฐ ๋๋ฌธ์ ํ์ฌ์์น๋ณด๋ค ์ผ์ชฝ์ ์๋ ์๋ ์๊ฑฐ๋ ๊ฐ๋ค.
์ค๋ณต๋๋ ์๋ฅผ ํฌํจํ ๋ฐฐ์ด์ ํ์ฌ ์์น๋ถํฐ ํ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ์ ์๋ ์๋ ํ์ํ์ง ์์๋ ๋๋ค.
๊ทธ๋์ ํ์ฌ ์์น์์๋ถํฐ n๊น์ง ๋ฐฐ์ด์ i๋ฒ์งธ ์์๋ฅผ ์ถ๊ฐํ๋ค.์ค๋ณต ์ฒดํฌํ๊ธฐ
๋ง๋ค์ด์ง ๋ฐฐ์ด์ด ์ค๋ณต๋๋ฉด ๋์ด์ ๊ทธ ์์ด์ ํ์ํ์ง ์๋๋ค. ์ค๋ณต๋์ง ์์ ๊ฒฝ์ฐ 2๋ฒ๊ณผ์ ์ ๊ณ์ ์ํํ๋ค.m๊ฐ ๋น๋ด๋ฆผ์ฐจ์ ๋ถ๋ถ์์ด
๋ง๋ค์ด์ง ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ m์ด๋ฉด ์ถ๋ ฅํ๊ณ ํ์์ ๋ฉ์ถ๋ค.
๐ฅ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys; input = sys.stdin.readline
n, m = map(int,input().split())
arr = sorted(list(map(int,input().split())))
tmp = []
chk = set()
def isDuplicate(li):
if li not in chk:
chk.add(li)
return True
return False
def dfs(inx):
if len(tmp) == m:
print(' '.join(map(str,tmp)))
return
for i in range(inx,n):
tmp.append(arr[i])
if isDuplicate(tuple(tmp)):
dfs(i)
tmp.pop()
dfs(0)
Comments powered by Disqus.