ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] ๋ฌธ์ž์—ด ์••์ถ• with Python
    PS 2021. 9. 12. 22:15
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ Programmers - [๋ฌธ์ž์—ด ์••์ถ•]

    ๐Ÿ’ก ์กฐ๊ฑด ๋ฐ ํ’€์ด

    1. ์ž…๋ ฅ ๋ฐ›๋Š” ์˜ ๊ธธ์ด๋Š” 1 <= s <= 1000, ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
    2. ๋ฌธ์ž์—ด์„ 1๊ฐœ ๋‹จ์œ„๋กœ ์ž๋ฅด๋Š” ๊ฒƒ๋ถ€ํ„ฐ s์˜ ๊ธธ์ด ๋งŒํผ ์ž๋ฅด๋Š” ๊ฒƒ๊นŒ์ง€ ๊ณ„์‚ฐ
    3. ์™„์ „ํƒ์ƒ‰, ๊ตฌํ˜„ ๋ฌธ์ œ
    4. ๋ฌธ์ž์—ด์„ ์ž๋ฅด๊ณ  ์ˆซ์ž๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์—์„œ ์“ธ๋ฐ ์—†๋Š” ๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋„๋ก ์ฃผ์˜

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

    def solution(s):
        k = len(s)
        answer = k
    
        for idx in range(1, k + 1):
            std = ''
            checker = s[0: idx]
            std += checker
            start, end = 0, idx
    
            cnt = 1
    
            for i in range(idx, k + 1, idx):
                if i == k:
                    if cnt <= 1:
                        break
                    else:
                        std += str(cnt)
                    break
    
                if checker == s[start + i:end + i]:
                    cnt += 1
    
                elif cnt <= 1:
                    std += s[start + i:end + i]
                    checker = s[start + i:end + i]
                    continue
    
                else:
                    std += str(cnt)
                    cnt = 1
                    std += s[start + i:end + i]
                    checker = s[start + i:end + i]
    
            answer = min(answer, len(std))
    
        return answer

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

    ์˜ˆ์ œ

    print(solution("aabbaccc"))
    print(solution("ababcdcdababcdcd"))
    print(solution("abcabcdede"))
    print(solution("abcabcabcabcdededededede"))
    print(solution("xababcdcdababcdcd"))

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

    7
    9
    8
    14
    17

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

    1. answer์˜ ๊ฐ’์„ s์˜ ๊ธธ์ด๋กœ ์ดˆ๊ธฐํ™”.
      s์˜ ๊ธธ์ด๋งŒํผ ์ž๋ฅธ๊ฒƒ์ด ๊ฐ€์žฅ ์งง์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— s์˜ ๊ธธ์ด๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
    2. 1๊ฐœ๋ถ€ํ„ฐ s์˜ ๊ธธ์ด๋งŒํผ ์ž˜๋ผ์ฃผ๋ฉด์„œ ์ง„ํ–‰์„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 1๋ถ€ํ„ฐ s+1 ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์ง„ํ–‰
    3. ์ž๋ฅธ ๋ฌธ์ž์—ด์€ ์ด๋ฏธ 1๊ฐœ๋งŒํผ ์ž˜๋ž๊ธฐ ๋•Œ๋ฌธ์— cnt = 1 ๋กœ ์ดˆ๊ธฐํ™”
    4. ์ž๋ฅธ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์ง„ํ–‰ํ•˜๋ฉด์„œ ์žˆ์„ ๊ฒฝ์šฐ, cnt += 1
    5. ์ž๋ฅธ ๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์„ ๊ฒฝ์šฐ, ๊ฒ€์‚ฌํ•  ๋ฌธ์ž๋ฅผ ๊ต์ฒดํ•œ๋‹ค
      ์ง€๊ธˆ๊นŒ์ง€ ๊ฒ€์‚ฌํ•ด์ฃผ๋˜ ๋‹จ์–ด์™€ ๋Š˜๋ ค์˜จ cnt๋ฅผ std์— ๋„ฃ์–ด์ฃผ๊ณ  ๋‹ค์‹œ ๊ฒ€์‚ฌ ์ง„ํ–‰.
    6. ๊ฒ€์‚ฌ๊ฐ€ ๋๋‚œ ๋’ค, std์˜ ๊ธธ์ด๊ฐ€ ๊ธฐ์กด์˜ answer ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๊ฐฑ์‹ .

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

    • ๋‚˜๋Š” ๊ตฌํ˜„์ด ๋งค์šฐ ์•ฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์Šตํ•˜๊ธฐ ๊ต‰์žฅํžˆ ์ข‹์€ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.