[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] LV.2 ๋ฌธ์ž์—ด ์••์ถ•

 

1. ๋ฌธ์ œ : Link

aabbcc ๋ฌธ์ž์—ด

abababccc ๋ฌธ์ž์—ด

 

๋ฌธ์ž์—ด์„ ํŠน์ •๋‹จ์œ„๋กœ ์••์ถ•ํ–ˆ์„๋•Œ ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ์šฐ

 

2. ํ’€์ด

๋จผ์ € ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆŒ ๋‹จ์œ„๋ฅผ for๋ฌธ์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค. (์ตœ์†Œ๋‹จ์œ„์ธ 1๋ถ€ํ„ฐ ์ตœ๋Œ€๋‹จ์œ„์ธ ์ „์ฒด๋ฌธ์ž์—ด(s)์˜ ์ ˆ๋ฐ˜๊นŒ์ง€)

 

๋ฐ˜๋ณต๋ฌธ ์‹œ์ž‘ ์‹œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ค€๋‹ค. (์ „์ฒด ๋ฌธ์ž์—ด ์ €์žฅ๊ณต๊ฐ„์ธ b = '' / ํ•ด๋‹น ๋‹จ์œ„๋กœ ์–ผ๋งˆ๋งŒํผ ๋ฐ˜๋ณตํ•ด์ค„์ง€์— ๋Œ€ํ•œ cnt = 1(1๋ถ€ํ„ฐ ์‹œ์ž‘) / ๋ฌธ์ž์—ด ๋‹จ์œ„์•ˆ์— ๋‹จ์œ„๊ฐ€ ๋  ๋ฌธ์ž์—ด ์ €์žฅ tmp[ :i ]

 

์ด์ œ ๋ฌธ์ž์—ด์„ ์ •ํ•ด์ง„ ๋‹จ์œ„๋งŒํผ ์Šค์บ”ํ•˜๋ฉฐ ์ด์ „์— ์ •ํ•ด์ง„ ๋‹จ์œ„ ๋ฌธ์ž์—ด์ด ์ค‘๋ณต๋˜๋Š”์ง€ ํ™•์ธํ•ด์ค€๋‹ค.

๋งŒ์•ฝ ์ค‘๋ณต๋œ๋‹ค๋ฉด) cnt๊ฐ’์„ ์˜ฌ๋ ค์ค€๋‹ค. 

๋งŒ์•ฝ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด) cnt๊ฐ’์ด 1์ธ์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ ์•ž์— ์ˆซ์ž๋ฅผ ๋ถ™์ด๊ฑฐ๋‚˜ ๋ถ™์ด์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด์„ b์— ์ €์žฅ

 

๋ฌธ์ž์—ด ์Šค์บ”์ด ๋‹ค ๋๋‚œ ํ›„ ๋งˆ์ง€๋ง‰์— ์Šค์บ”ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” tmp์— ๊ฐ’์„ ์ €์žฅ๋งŒ ํ•ด์ฃผ๊ณ  ๋๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์—

ํ•ด๋‹น ๊ฐ’์„ b์— ๋‹ค์‹œ ๋„ฃ์–ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์บ” ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚œ ํ›„์—๋„ cnt๊ฐ’์ด 1์ธ์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ์„œ b๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ list์— ์ถ”๊ฐ€ํ•˜๊ณ  min๊ฐ’ return

 

3. ์ฝ”๋“œ

def solution(s): 
    result=[] 
    if len(s)==1: 
        return 1 
    for i in range(1, (len(s)//2)+1): 
        b = '' 
        cnt = 1 
        tmp=s[:i]  
        for j in range(i, len(s), i): 
            if tmp==s[j:i+j]: 
                cnt+=1 
            else: 
                if cnt!=1: 
                    b = b + str(cnt)+tmp 
                else: 
                    b = b + tmp 
                tmp=s[j:j+i] 
                cnt = 1 
        if cnt!=1: 
            b = b + str(cnt) + tmp 
        else: 
            b = b + tmp 
        result.append(len(b)) 
    return min(result)
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ