ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 9742 ์ˆœ์—ด with Python
    PS 2022. 3. 3. 19:08
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 9742 ์ˆœ์—ด

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์ง‘ํ•ฉ์˜ ์ˆœ์—ด์ด๋ž€ ์ง‘ํ•ฉ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์›์†Œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆœ์„œ์ด๋‹ค.

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

    3. ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

    4. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” ์ตœ๋Œ€ 10์ด๋‹ค.

    5. ์‚ฌ์ „์ˆœ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด ๋‹ค์Œ์—๋Š” ์ฐพ์•„์•ผ ํ•˜๋Š” ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ๊ฐ’์€ 3,628,800๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

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

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

    from sys import stdin
    from math import factorial
    
    
    def solve(string, i):
        global cnt
        if i == len(a):
            cnt += 1
            if cnt == b:
                return string
        else:
            for k in a:
                if k not in string:
                    res = solve(string + k, i + 1)
                    if res:
                        return res
    
        return
    
    
    while 1:
        cnt = 0
        input_data = stdin.readline().rstrip().split()
    
        if len(input_data) != 2:
            break
    
        a, b = input_data
        b = int(b)
    
        if factorial(len(a)) < b:
            print(a, b, '=', 'No permutation')
        else:
            print(a, b, '=', solve('', 0))

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

    ์˜ˆ์ œ

    235 4
    bein 20
    123456 700
    mnpqr 130
    tuvwxyz 4000

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

    235 4 = 352
    bein 20 = nbie
    123456 700 = 651342
    mnpqr 130 = No permutation
    tuvwxyz 4000 = ywuxvzt

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

    1. ์ž…๋ ฅ๋ฐ›์€ ์ˆœ์—ด ์ง‘ํ•ฉ์˜ ๊ธธ์ด์˜ ์ œ๊ณฑ์ด ๊ตฌํ•˜๊ณ ์žํ•˜๋Š” ์ˆœ์„œ์˜ ์ˆซ์ž๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, No permutation ์„ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    2. (1)๋ฒˆ์— ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์žฌ๊ท€ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ˆœ์—ด์„ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    3. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— while ๋ฌธ์œผ๋กœ ๊ฐ์‹ผ ๋’ค, ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž๊ฐ€ 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ break ๋ฅผ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    4. ์žฌ๊ท€ํ˜ธ์ถœ์—์„œ cnt ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ˆœ์—ด์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์ง€๋ฉด ๊ทธ๋Œ€๋กœ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ์ž…๋ ฅ ๋ฐ›์€ ์ˆœ์—ด ์ง‘ํ•ฉ์˜ ๊ธธ์ด์˜ ์ œ๊ณฑ์ด ๊ตฌํ•˜๊ณ ์žํ•˜๋Š” n๋ฒˆ์งธ, ์ฆ‰ n๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ DFS๋ฅผ ๋Œ๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๋Š” ์‚ฌ์‹ค์„ ๋ชฐ๋ž๋‹ค
    2. (1)๋ฒˆ์„ ์ž˜ ๋ชฐ๋ž๊ธฐ์— ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋– ์„œ ๊ณ ์ƒ์„ ํ–ˆ๋˜ ๋ฌธ์ œ์ด๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.