ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 15655 N๊ณผ M (6) with Python
    PS 2023. 4. 18. 16:33
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 15655 N๊ณผ M (6)

    ๐Ÿ’ก ์กฐ๊ฑด

    1. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์™€ ์ž์—ฐ์ˆ˜ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ.
      N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆ˜์ด๋‹ค.

    2. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด
      ์ˆ˜์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด์–ด์•ผ ํ•œ๋‹ค.

    3. ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 8)

    4. ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

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

    6. ๋ฐฑํŠธ๋ž˜ํ‚น ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ 1

    3 1
    4 5 2

    ์‹คํ–‰๊ฒฐ๊ณผ 1

    2
    4
    5

    ์˜ˆ์ œ 2

    4 2
    9 8 7 1

    ์‹คํ–‰๊ฒฐ๊ณผ 2

    1 7
    1 8
    1 9
    7 8
    7 9
    8 9

    ์˜ˆ์ œ 3

    4 4
    1231 1232 1233 1234

    ์‹คํ–‰๊ฒฐ๊ณผ 3

    1231 1232 1233 1234

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด์„ sort ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ •๋ ฌํ•œ๋‹ค.

    2. ํ•จ์ˆ˜ f์—์„œ๋Š” m๊ณผ cnt๊ฐ€ ๊ฐ™์„ ๋•Œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” res ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

    3. ํ•จ์ˆ˜ f์—์„œ๋Š” res ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํด ๋•Œ res ๋ฐฐ์—ด์˜ ๋งจ ๋งˆ์ง€๋ง‰์˜ ์›์†Œ์™€ ํ˜„์žฌ ๋„ฃ์œผ๋ ค๊ณ  ํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด ๋„ฃ๋Š”๋‹ค.
      ์˜ค๋ฆ„์ฐจ์ˆœ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin, setrecursionlimit
    
    setrecursionlimit(10 ** 7)
    
    n, m = map(int, stdin.readline().split())
    arr = list(map(int, stdin.readline().split()))
    arr.sort()
    
    
    def f(res, cnt):
        if cnt == m:
            print(*res)
            return
    
        for i in range(cnt, n):
            if len(res) > 0:
                if res[-1] < arr[i]:
                    f(res + [arr[i]], cnt + 1)
            else:
                f(res + [arr[i]], cnt + 1)
    
    
    f([], 0)
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.