์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๋ฌธ์ œํ’€์ด (Python)

[Programmers] ๋ฌธ์ž์—ด ์••์ถ• (Lv.2) 2024/4/2

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2024. 4. 2. 17:09
728x90
๋ฌธ์ œ ์ œ๋ชฉ์ •๋‹ต๋ฅ ๋‚œ์ด๋„
๋ฌธ์ž์—ด ์••์ถ•43%Lv.2

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 
๋ฌธ์ œ์š”์•ฝ
๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
์กฐ๊ฑด 1) ๋ฌธ์ž์—ด์„ 1๊ฐœ ์ด์ƒ์˜ ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ์••์ถ•ํ•œ๋‹ค.
์กฐ๊ฑด 2) ์••์ถ• ์—ฌ๋ถ€๋Š” ํ˜„์žฌ ๋ฌธ์ž์—ด์ด ๋ฐ”๋กœ ๋‹ค์Œ ๋ฌธ์ž์—ด๊ณผ ๋™์ผํ•˜๋ฉด ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
์กฐ๊ฑด 3) ๋ฌธ์ž์—ด์„ ์ž๋ฅผ ๋•Œ ์กฐ๊ฑด 1) ์ดํ•˜์ธ ๋ ๋ฌธ์ž์—ด์€ ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.
์ด๋•Œ, ์••์ถ•ํ›„ ์ตœ์†Œ์˜ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ
 

ํ’€์ด

Step1. ์ตœ๋Œ€ ๋ช‡ ๊ฐœ๊นŒ์ง€ ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ -> [1~len(s)//2]
Step2. ํ˜„์žฌ ๋ฌธ์ž์—ด๊ณผ ๋‹ค์Œ ๋ฌธ์ž์—ด ๋น„๊ต

 
โ€ปโ€ป ์ฑ…์˜ ํ’€์ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค. step2์—์„œ ์ฑ…์˜ ๊ฒฝ์šฐ ์ด์ „ ๋ฌธ์ž์—ด๊ณผ ๋‹ค์Œ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋„๋ก ํ•˜์˜€๋‹ค. -> for๋ฌธ ์กฐ๊ฑด์ด ์ผ๋ถ€ ์ฐจ์ด

def solution(s):
    result=len(s)
    if result==1:
        return 1
    
    for length in range(1, len(s)//2+1, 1):
        idx=0
        ์••์ถ•_string=""
        last_iter=0
        for idx in range(0, len(s)-2*length+1, length):#idx+2*length<=len(s) -> idx<len(s)-2*length+1
            if s[idx:idx+length]==s[idx+length:idx+2*length]:
                last_iter+=1
            else:
                if last_iter!=0:
                    ์••์ถ•_string+=str(last_iter+1)
                    last_iter=0
                ์••์ถ•_string+=s[idx:idx+length]
                
        if last_iter!=0:
            ์••์ถ•_string+=str(last_iter+1)
        ์••์ถ•_string+=s[idx+length:]
        result=min(len(์••์ถ•_string), result)
    return result
728x90