ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1411 ๋น„์Šทํ•œ ๋‹จ์–ด with Python
    PS 2021. 12. 12. 03:25
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 1411 ๋น„์Šทํ•œ ๋‹จ์–ด

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ๋ฌธ์ž์—ด A๋ฅผ ์ˆŒ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๊พธ์–ด B๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ๊ทธ ๋‹จ์–ด๋Š” ๋น„์Šทํ•œ ๋‹จ์–ด๋ผ๊ณ ํ•œ๋‹ค.

    2. ์ˆŒ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๊พผ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์–ด A์— ๋“ฑ์žฅํ•˜๋Š” ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์„ ๋‹ค๋ฅธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

    3. ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ช‡ ๊ฐœ์˜ ์Œ์ด ๋น„์Šทํ•œ์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

    4. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 50
      N์€ 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.
      ๋ชจ๋“  ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” ๊ฐ™๊ณ , ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค.

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

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

    from sys import stdin
    from itertools import combinations
    
    words = []
    res = set()
    tc = int(stdin.readline())
    
    if tc == 1:
        print(res)
    else:
        for _ in range(tc):
            words.append(stdin.readline().rstrip())
    
        for pair in list(set(combinations(words, 2))):
            change = dict()
            use = set()
            tf = True
            x, y = pair
            a, b = pair
            a, b = list(a), list(b)
            n, m = len(a), len(b)
    
            if n != m:
                continue
            else:
                for i in range(n):
                    if a[i] != b[i] and b[i] not in use and a[i] not in change:
                        change[a[i]] = b[i]
                        use.add(b[i])
                        a[i] = b[i]
                    else:
                        if a[i] in change:
                            a[i] = change[a[i]]
                        else:
                            if a[i] in use:
                                tf = False
                                break
                            else:
                                change[a[i]] = b[i]
                                use.add(b[i])
    
                if a == b and tf:
                    res.add((x, y))
    
        print(len(res))

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

    ์˜ˆ์ œ

    12
    cacccdaabc
    cdcccaddbc
    dcdddbccad
    bdbbbaddcb
    bdbcadbbdc
    abaadcbbda
    babcdabbac
    cacdbaccad
    dcddabccad
    cacccbaadb
    bbcdcbcbdd
    bcbadcbbca

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

    13

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

    1. ๊ฐ€๋Šฅํ•œ ๊ฐ ๋‹จ์–ด๋“ค์˜ ์Œ์„ combinations ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆœํšŒํ•œ๋‹ค.

    2. ์ด๋ฏธ ๋ณ€ํ™˜ํ–ˆ๋˜ ๋‹จ์–ด๋ฅผ ์ €์žฅํ•  ์ง‘ํ•ฉ ์ž๋ฃŒํ˜• use๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋‹จ์–ด์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒํ•˜๋ฉด์„œ ์•„๋ž˜์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

      • ์ˆœํšŒํ•˜๊ณ  ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์ด ์„œ๋กœ ๊ฐ™์ง€์•Š๊ณ , a[i]๋ฒˆ ์งธ ๋‹จ์–ด๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ , change์— ์—†๋‹ค.
    3. 2๋ฒˆ์— ์žˆ๋Š” ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ

      change[a[i]] = b[i]
      use.add(b[i])
      a[i] = b[i]
    4. 2๋ฒˆ์— ์žˆ๋Š” ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, a[i]๊ฐ€ change์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

      • ์ฐธ์ผ ๊ฒฝ์šฐ, a[i] = change[a[i]]
    1. 4๋ฒˆ์˜ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, a[i]๊ฐ€ use์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

      • ์žˆ๋Š” ๊ฒฝ์šฐ์— tf๋ฅผ False๋กœ ์ €์žฅํ•˜๊ณ , ๋ฐ˜๋ณต๋ฌธ์„ ๋ฉˆ์ถ˜๋‹ค.
      • ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
        change[a[i]] = b[i]
        use.add(b[i])
    2. ์ˆœํšŒ๋ฅผ ๋งˆ์น˜๋ฉด a์™€ b๊ฐ€ ๊ฐ™์€์ง€, tf๊ฐ€ True์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
      ์ฐธ์ด๋ฉด, ๋ฌธ์ž์—ด ์Œ์„ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.

    3. ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

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

    1. ์‹ค๋ฒ„ II ํ‹ฐ์–ด์˜ ๋ฌธ์ œ์ธ๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์กฐ๊ฑด์ด ๊นŒ๋‹ค๋กœ์›Œ์„œ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ์— ์• ๋ฅผ ๋จน์—ˆ๋‹ค.
    2. ์ƒ๊ฐ๋ณด๋‹ค ๋ถ€๋ฅดํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์ด ํ’€๊ธฐ ๊นŒ๋‹ค๋กญ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋œ ๋ฌธ์ œ์˜€๋‹ค
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.