-
[๋ฐฑ์ค] 9742 ์์ด with PythonPS 2022. 3. 3. 19:08728x90๋ฐ์ํ
๐ BOJ 9742 ์์ด
๐ก ์กฐ๊ฑด
์งํฉ์ ์์ด์ด๋ ์งํฉ์ ์๋ก ๋ค๋ฅธ ์์๋ฅผ ๋ชจ๋ ์ฌ์ฉํด ๋ง๋ค ์ ์๋ ์์์ด๋ค.
์๋ก ๋ค๋ฅธ ์ซ์์ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ์งํฉ๊ณผ ์์น๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์งํฉ์ ์์ด ์ค ์ฃผ์ด์ง ์์น์ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฌธ์
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ์๋ก ๋ค๋ฅธ ์ซ์์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ ์ต๋ 10์ด๋ค.
์ฌ์ ์ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด ๋ค์์๋ ์ฐพ์์ผ ํ๋ ์์น๊ฐ ์ฃผ์ด์ง๋ฉฐ, ์ด ๊ฐ์ 3,628,800๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
๋ฐฑํธ๋ํน ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
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
โจ๏ธ ๋ฌธ์ ํ์ด
์ ๋ ฅ๋ฐ์ ์์ด ์งํฉ์ ๊ธธ์ด์ ์ ๊ณฑ์ด ๊ตฌํ๊ณ ์ํ๋ ์์์ ์ซ์๋ณด๋ค ์์ ๊ฒฝ์ฐ, No permutation ์ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
(1)๋ฒ์ ํด๋นํ์ง ์์ ๊ฒฝ์ฐ, ์ฌ๊ทํธ์ถ์ ํตํด ์์ด์ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ while ๋ฌธ์ผ๋ก ๊ฐ์ผ ๋ค, ์ ๋ ฅ๋ฐ์ ๋ฌธ์๊ฐ 2๊ฐ๋ก ๋๋์ด์ง์ง ์์ ๊ฒฝ์ฐ break ๋ฅผ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ฌ๊ทํธ์ถ์์ cnt ์ ๊ฐ์๊ฐ ์ฌ๊ท ํธ์ถ์ ํตํด ๋ง๋ค์ด์ง ์์ด์ ๊ฐ์์ ๊ฐ์์ง๋ฉด ๊ทธ๋๋ก ๋ฌธ์์ด์ ๋ฐํ์ํค๋ฉด ๋ฉ๋๋ค.
๐พ ๋๋์
- ์ ๋ ฅ ๋ฐ์ ์์ด ์งํฉ์ ๊ธธ์ด์ ์ ๊ณฑ์ด ๊ตฌํ๊ณ ์ํ๋ n๋ฒ์งธ, ์ฆ n๋ณด๋ค ์์ ๊ฒฝ์ฐ DFS๋ฅผ ๋๋ฆฌ์ง ์์๋ ๋๋ ์ฌ์ค์ ๋ชฐ๋๋ค
- (1)๋ฒ์ ์ ๋ชฐ๋๊ธฐ์ ๋น์ฐํ ์๊ฐ์ด๊ณผ๊ฐ ๋ ์ ๊ณ ์์ ํ๋ ๋ฌธ์ ์ด๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 15965 K๋ฒ์งธ ์์ with Python (0) 2022.03.04 [๋ฐฑ์ค] 10384 ํฌ๊ทธ๋จ with Python (0) 2022.03.03 [๋ฐฑ์ค] 8394 ์ ์ with Python (0) 2022.03.02 [๋ฐฑ์ค] 6443 ์ ๋๊ทธ๋จ with Python (0) 2022.03.02 [๋ฐฑ์ค] 2697 ๋ค์์ ๊ตฌํ๊ธฐ with Python (0) 2022.03.01