PS

[๋ฐฑ์ค€] 1515 ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ with Python

ํ˜•์ค€_It's 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. ์ธ๋ฑ์‹ฑ์— ๋งค์šฐ ์•ฝํ•˜๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋ฉด ๋ฐ˜๋ณต ๋ฐ–์—๋Š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋ฐ˜์‘ํ˜•