ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1515 ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ with Python
    PS 2021. 12. 12. 17:07
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 1515 ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ชจ๋“  ์ˆ˜๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๊ณต๋ฐฑ์—†์ด ํ•œ ์ค„์— ๋‹ค ์ผ๋‹ค.

    2. ๋‹ค์†œ์ด๊ฐ€ ์ˆซ์ž์˜ ์ผ๋ถ€๋ฅผ ์ง€์› ๊ณ , ์ง€์›Œ์ง€๊ธฐ ์ „์˜ ์ˆซ์ž๋ฅผ ๋‹ค์‹œ ์“ฐ๋ ค๊ณ  ํ•˜๋‹ˆ N์ด ๊ธฐ์–ต๋‚˜์ง€ ์•Š๋Š”๋‹ค.

    3. ๋‚จ์€ ์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์ธ ์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, N์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

    4. ์ผ๋ถ€ ์ˆซ์ž๋ฅผ ์ง€์šฐ๊ณ  ๋‚จ์€ ์ˆ˜๋ฅผ ์ด์–ด๋ถ™์ธ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ์ˆ˜๋Š” ์ตœ๋Œ€ 3000์ž๋ฆฌ.

    5. ๊ตฌํ˜„, ๋ฌธ์ž์—ด, ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

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

    from sys import stdin
    
    data = stdin.readline().rstrip()
    s, i = '', 1
    
    
    def check(s):
        t = list(s)
        k = list(data)
    
        while 1:
            if len(t) < len(data):
                return ' '
    
            else:
                i = 0
                chk = 0
                while 1:
                    if i >= len(k) or i >= len(t):
                        if chk:
                            return ''.join(t)
                        else:
                            return ''.join(t[:len(data)])
    
                    if t[i] != k[i]:
                        t.pop(i)
                        chk = 1
                    else:
                        i += 1
    
    while 1:
        s += str(i)
    
        # check
        tf = check(s)
    
        if tf[:min(len(tf), len(data))] == data:
            print(i)
            break
    
        # tf = False
        if tf != ' ':
            s = tf
            i += 1
        else:
            i += 1

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

    ์˜ˆ์ œ

    00000000000000000000000000000000000000000000000000000000000000000000000

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

    400

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

    1. 1๋ถ€ํ„ฐ ์ˆ˜๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉด์„œ ์™„์ „ํƒ์ƒ‰์„ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
      i, s ๋Š” ๊ฐ๊ฐ 1๊ณผ '' ๋กœ ์ดˆ๊ธฐํ™” ํ•œ ๋’ค, while 1: ๋ฐ˜๋ณต์œผ๋กœ i๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉฐ ์ˆœํšŒํ•œ๋‹ค.

    2. s ์— str(i)๋ฅผ ์ด์–ด ๋ถ™์ด๊ณ  check() ํ•จ์ˆ˜์—์„œ ๊ฒ€์‚ฌ๋ฅผ ์‹ค์‹œํ•œ๋‹ค.

    3. check ํ•จ์ˆ˜์—์„œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ data์™€ while ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ ์ด์–ด ๋ถ™์ธ ์ˆซ์ž์˜ ๊ธธ์ด๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.
      ๋งŒ์•ฝ, ๊ธธ์ด๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ' '๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
      ๋งŒ์•ฝ, ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด data ๋ฐฐ์—ด๊ณผ ์ด์–ด ๋ถ™์ธ ์ˆซ์ž์˜ ๊ฐ ์ž๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ํ‹€๋ฆฐ๊ฒƒ์€ pop() ์œผ๋กœ ๋นผ์ค€๋‹ค
      ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ, ๊ฐ ์ž๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๋™์ผํ–ˆ๋‹ค๋ฉด chk ๋ณ€์ˆ˜๋Š” 0์ด๊ณ  data์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜ํ™˜
      ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ๊ฐ ์ž๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  pop()์„ ์‚ฌ์šฉํ•ด ์ˆซ์ž๋ฅผ ๋บ€ ์ด์–ด ๋ถ™์ธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

    4. check ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋ฐ›์€ tf ๋ณ€์ˆ˜๋Š” ' ' ํ˜น์€ 3๋ฒˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
      ๋งŒ์•ฝ tf ๋ณ€์ˆ˜๊ฐ€ data์˜ ๊ธธ์ด์™€ tf์˜ ๊ธธ์ด ์ค‘ ์งง์€ ๊ธธ์ด๋งŒํผ ์ž˜๋ผ๋ƒˆ์„ ๋•Œ, data์˜ ๊ธธ์ด์™€ ๊ฐ™๋‹ค๋ฉด
      ํ˜„์žฌ์˜ i๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ  while์„ ์ข…๋ฃŒํ•œ๋‹ค.

    5. 4๋ฒˆ์—์„œ ์ข…๋ฃŒ๊ฐ€ ์•ˆ๋˜์—ˆ๊ณ  tf ๊ฐ€ ' '๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด,

      • s๋Š” tf๋กœ ์ €์žฅํ•ด์ฃผ๊ณ , i ๋ฅผ 1๋งŒํผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.
      • ์ด ๋•Œ tf๋Š” ์ด์–ด ๋ถ™์ธ ์ˆ˜์—์„œ ์ˆซ์ž๋ฅผ ์ง€์šด ์ƒํƒœ์ด๋‹ค.*
    6. 4๋ฒˆ์—์„œ ์ข…๋ฃŒ๊ฐ€ ์•ˆ๋˜์—ˆ๊ณ , tf ๊ฐ€ ' '๊ณผ ๊ฐ™๋‹ค๋ฉด,

      • i ๋ฅผ 1๋งŒํผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.
      • data ๋ณ€์ˆ˜์™€ ๋‹จ ํ•œ์ž๋ฆฌ๋„ ๊ฐ™์ง€ ์•Š์•„ ์ด์–ด ๋ถ™์ธ ์ˆ˜๊ฐ€ pop()์— ์˜ํ•ด ๋‹ค ๋ฝ‘ํžŒ ๊ฒƒ.*

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

    1. ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค์™€ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋‚  ๊ดด๋กญํ˜”๋‹ค.
      ๊ทธ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

      • ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ด๋‹ค ๋ณด๋ฉด 10์˜ ์ž๋ฆฌ๋ฅผ ๋ถ™์ด๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ ์ˆœ๊ฐ„ data ๋ณ€์ˆ˜์˜ ๊ธธ์ด๋ณด๋‹ค ์ด์–ด ๋ถ™์ธ ์ˆ˜์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์งˆ ๋•Œ ๊ฒ€์‚ฌํ•˜๋‹ค๊ฐ€ ์˜ค๋ฅ˜.
      • ๋ฐ˜ํ™˜ํ•  ๋•Œ๋„ ์ด๋ฏธ data ๋ณ€์ˆ˜์™€ ๊ธธ์ด๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ํ˜น์€ ๊ธธ์ด๊ฐ€ ๊ธธ๊ฒŒ๋‚˜์™€์„œ ๋‹ต๋„ ์ œ๋Œ€๋กœ ์•ˆ๋‚˜์™”๋‹ค.
    2. ์ธ๋ฑ์‹ฑ์— ๋งค์šฐ ์•ฝํ•˜๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋ฉด ๋ฐ˜๋ณต ๋ฐ–์—๋Š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.