๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปAlgorithm/PS

[BOJ/๋ฐฑ์ค€] 9742 ์ˆœ์—ด - ํŒŒ์ด์ฌ

๋ฌธ์ œ

https://www.acmicpc.net/problem/9742

 

9742๋ฒˆ: ์ˆœ์—ด

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

www.acmicpc.net

 

 

๋ฌธ์ œํ’€์ด

bruteforce ๋ฌธ์ œ

-์ฐพ๊ณ ์ž ํ•˜๋Š” ์ˆœ์„œ๊ฐ€ ๋ฌธ์ž์—ด์˜ ํŒฉํ† ๋ฆฌ์–ผ ๊ฐ’ ๋ณด๋‹ค ํด ๋•Œ, no permutation ์ถœ๋ ฅ

-๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ solveํ•จ์ˆ˜ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœ

 solve ํ•จ์ˆ˜

 ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™๊ณ , ์›ํ•˜๋Š” ์ˆœ์„œ์˜ ๋ฌธ์ž์—ด์ผ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. 

 solve(s+k,i+1) ์œผ๋กœ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด์„œ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœ

 

 

 

์ฝ”๋“œ

import sys
input=sys.stdin.readline
import math

def solve(s,i):
    global cnt
    if i==len(string):
        cnt+=1
        if cnt==n:
            return s
    else:
        for k in string:
            if k not in s:
                res=solve(s+k,i+1)
                if res:
                    return res
    return
    
while(True):
    cnt=0
    inn=input().split()
    
    if len(inn)!=2:
        break
    string,n=inn
    n=int(n)
    many=math.factorial(len(string))
    if n>many:
        print(string,n,'= No permutation')
        continue
    print(string,n,'=',solve('',0))