ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 6443 ์• ๋„ˆ๊ทธ๋žจ with Python
    PS 2022. 3. 2. 23:42
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 6443 ์• ๋„ˆ๊ทธ๋žจ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N ์ด, ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์˜๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

    2. ์˜๋‹จ์–ด๋Š” ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 20๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ์• ๋„ˆ๊ทธ๋žจ์˜ ์ˆ˜๊ฐ€ 100,000๊ฐœ ์ดํ•˜์ธ ๋‹จ์–ด๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

    3. ์• ๋„ˆ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋žจ์ด๋ž€, ์ž…๋ ฅ๋ฐ›์€ ์˜๋‹จ์–ด์˜ ์ฒ ์ž๋“ค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    4. ์ž…๋ ฅ๋ฐ›์€ ๋‹จ์–ด๋‚ด์— ๋ช‡๋ช‡ ์ฒ ์ž๊ฐ€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋งŒ๋“ค์–ด ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ,

    5. ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์ถœ๋ ฅํ•  ๋•Œ์— ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

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

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

    from sys import stdin
    
    
    def solve(l, s):
        if l == 0:
            visited.add(s)
            return
    
        for i in range(26):
            if alpha[i] >= 1:
                alpha[i] -= 1
                solve(l - 1, s + chr(i + 97))
                alpha[i] += 1
    
    
    for _ in range(int(stdin.readline())):
        visited = set()
        alpha = [0 for _ in range(26)]
        string = stdin.readline().rstrip()
    
        for i in string:
            alpha[ord(i)-97] += 1
    
        solve(len(string), '')
        for s in sorted(list(visited)):
            print(s)

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

    ์˜ˆ์ œ

    2
    abc
    acba

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

    abc
    acb
    bac
    bca
    cab
    cba
    aabc
    aacb
    abac
    abca
    acab
    acba
    baac
    baca
    bcaa
    caab
    caba
    cbaa

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

    1. string ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด์„, ๊ฐ ์•ŒํŒŒ๋ฒณ์ด ๋ช‡ ๊ฐœ ๋‚˜์™”๋Š”์ง€ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  alpha ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค

    2. ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ arr์— ๊ฐ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ๋กํ•ด์ค€๋‹ค.

    3. solve() ํ•จ์ˆ˜์— string์˜ ๊ธธ์ด์™€ ๋นˆ ๋ฌธ์ž์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    4. solve() ํ•จ์ˆ˜์—์„œ alpha ๋ฐฐ์—ด์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํด ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฌธ์ž์—ด์— ์•ŒํŒŒ๋ฒณ์„ ๋ถ™์ด๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ๋Š”๋‹ค.
      ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ -1 ํ•ด์ค€๋‹ค.

    5. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด ๋˜์—ˆ์„ ๋•Œ, visited ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

    6. visited ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ •๋ ฌํ•œ ๋’ค, ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

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

    1. ๊ณจ๋“œ๋ฌธ์ œ์น˜๊ณ  ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š” ์‰ฌ์šด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.
    2. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ๊ฐ„๋‹จํžˆ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.