PS

[๋ฐฑ์ค€] 1342 ํ–‰์šด์˜ ๋ฌธ์ž์—ด with Python

ํ˜•์ค€_It's 2022. 3. 1. 03:58
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 1342 ํ–‰์šด์˜ ๋ฌธ์ž์—ด

๐Ÿ’ก ์กฐ๊ฑด

  1. ์ธ์ ‘ํ•ด ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š์€ ๋ฌธ์ž์—ด์„ ํ–‰์šด์˜ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

  2. ์ค€์˜์ด๋Š” ๋ฌธ์ž์—ด S์— ๋‚˜์˜ค๋Š” ๋ฌธ์ž๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ–‰์šด์˜ ๋ฌธ์ž์—ด์ด ๋ช‡ ๊ฐœ ๋‚˜์˜ค๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.

  3. ๋งŒ์•ฝ ์›๋ž˜ ๋ฌธ์ž์—ด S๋„ ํ–‰์šด์˜ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด ๊ทธ๊ฒƒ๋„ ๊ฐœ์ˆ˜์— ํฌํ•จํ•œ๋‹ค.

  4. S์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 10์ด๊ณ , ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  5. ์ฒซ์งธ ์ค„์— ์œ„์น˜๋ฅผ ์žฌ๋ฐฐ์น˜ํ•ด์„œ ์–ป์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ–‰์šด์˜ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  6. ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

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

from sys import stdin

arr = stdin.readline().rstrip()
cnt = 0
point = [0 for _ in range(26)]
for i in arr:
    point[ord(i) - 97] += 1


def solve(goal, p):
    global cnt
    if goal == 0:
        cnt += 1
        return

    for c in set(list(arr)):
        if point[ord(c) - 97] > 0 and c != p:
            point[ord(c) - 97] -= 1
            solve(goal - 1, c)
            point[ord(c) - 97] += 1


solve(len(arr), '')
print(cnt)

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

์˜ˆ์ œ

abcdefghij

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

3628800

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

  1. ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

  2. arr ์— ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•œ ๋’ค, ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ point ๋ฐฐ์—ด์— ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  3. solve() ํ•จ์ˆ˜๋Š” ์žฌ๊ท€ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

  4. arr ์— ์žˆ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๋ฌธ์ž๋ฅผ ํ•˜๋‹ˆ์”ฉ ๋„ฃ์œผ๋ฉด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด๋งˆ๋‹ค cnt๋ฅผ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค์ค๋‹ˆ๋‹ค.

  5. cnt๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ ๋А๋‚€์ 

  1. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ธŒ๋ฃจํŠธํฌ์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ํŒŒ์ด์ฌ์—์„œ๋Š” pypy๋กœ ์ฑ„์ ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•