๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

[๋ฐฑ์ค€] 15666 N๊ณผ M 12 (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2024. 3. 21. 20:00
 

15666๋ฒˆ: N๊ณผ M (12)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net


๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ


์•„์ด๋””์–ด

์–ด์ฐจํ”ผ ๊ฐ™์€ ์ˆซ์ž๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•ด๋„ ๋˜๋ฏ€๋กœ, ๋ฌธ์ œ์—์„œ ์ œ๊ณตํ•œ N๊ฐœ์˜ ์ˆ˜์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ด ์ค€๋‹ค.

 

๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ™œ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ๋œ๋‹ค.


์ „์ฒด ์ฝ”๋“œ

N, M = map(int, input().split())
numList = [int(x) for x in input().split()]

numList = sorted(list(set(numList))) # ์ค‘๋ณต ์ œ๊ฑฐํ›„ ์ •๋ ฌ
n = len(numList)
answer = list()
seq = []

def dfs(num, depth):
    if depth == M:
        print(" ".join(map(str, seq)))
        return

    for i in range(numList.index(num), n):
        seq.append(numList[i])
        dfs(numList[i], depth + 1)
        seq.pop()

dfs(numList[0], 0)

์ฝ”๋“œ ์„ค๋ช…

def dfs(num, depth):
    if depth == M:
        print(" ".join(map(str, seq)))
        return

    for i in range(numList.index(num), n):
        seq.append(numList[i])
        dfs(numList[i], depth + 1)
        seq.pop()

 

์ œ๊ณต๋œ ์ˆซ์ž๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. 

์ˆ˜์—ด์˜ ๊ธธ์ด๊ฐ€ M์ด ๋˜๋ฉด print๋กœ ๋ฐ”๋กœ ์ถœ๋ ฅํ•ด ์ค€๋‹ค. ์ด์ „์— ์ด๋ฏธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•ด ๋†“์•„์„œ 

์ถœ๋ ฅ ์ˆœ์„œ๋Š” ๊ณ ๋ ค ์•ˆ ํ•ด๋„ ๋œ๋‹ค.