๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Coding Test

[Level 2] ๋ฌธ์ž์—ด ์••์ถ•

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌธ์ž์—ด ์••์ถ•

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์–ดํ”ผ์น˜๋Š” ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋น„์†์‹ค ์••์ถ• ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌธ์ž

programmers.co.kr

 

def solution(s):
    len_s = len(s)
    cand = []
    
    if len_s < 3:
        return len_s

    for u in range(1, int(len_s/2)+1):
        splt_s = [s[u*i:u*(i+1)] for i in range(int(len_s/u)+1)]
        comp_s = []

        prev = splt_s.pop(0)
        cnt = 1
    
        while splt_s:
            cur = splt_s.pop(0)
        
            if cur == prev:
                cnt += 1
            
                if len(splt_s) == 0:
                    comp_s.append(str(cnt)+cur)
                
            else:
                if cnt != 1:
                    comp_s.append(str(cnt)+prev)
                
                else:
                    comp_s.append(prev)
                
                prev = cur
                cnt = 1
                
                if len(splt_s) == 0:
                    comp_s.append(cur)
                
        cand.append(len(''.join(comp_s)))
    
    return min(cand)

 

โ–ท ๋ฌธ์ž์—ด์˜ ์ž๋ฅด๋Š” ๋‹จ์œ„๋Š” ์ „์ฒด ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜์˜ ๋ฐ˜๊นŒ์ง€๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค. ๋ฐ˜์ด ๋„˜์„ ๊ฒฝ์šฐ, ๋ฌธ์ž์—ด์ด 2๊ฐœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ , ๋‘ ๋‹จ์œ„์˜ ๊ธ€์ž ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ ๊ฐ™์„ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

โ–ท ์ด์ „ ์‹œ์ ์˜ ๋ฌธ์ž์—ด ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” prev ๋ณ€์ˆ˜์™€ ํ˜„์žฌ ์‹œ์ ์˜ ๋ฌธ์ž์—ด ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” cur ๋ณ€์ˆ˜๋ฅผ ๋‘์—ˆ๋‹ค. while ๋ฌธ์„ ๋Œ๋ฉด์„œ, prev ๋ณ€์ˆ˜์™€ cur ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์•„์งˆ ๊ฒฝ์šฐ, cnt ๋ณ€์ˆ˜์— 1์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฌธ์ž์—ด ๋‹จ์œ„์˜ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅด๋‹ค๋ฉด, comp_s ๋ฆฌ์ŠคํŠธ์— cnt ๋ณ€์ˆ˜์™€ ๋ฌธ์ž์—ด ๋‹จ์œ„๋ฅผ ํ•ฉ์นœ ๋’ค, ์ถ”๊ฐ€ํ•˜์—ฌ ์••์ถ•๋œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ๊ฐ„๋‹ค. ์ด๋•Œ, cnt ๋ณ€์ˆ˜๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž์—ด ๋‹จ์œ„๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค. 

 

โ–ท ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด ๋‹จ์œ„์— ๋Œ€ํ•œ ๊ฒฝ์šฐ๋ฅผ if len(splt_s) == 0 ๋ฌธ์„ ํ†ตํ•ด ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ๋˜ํ•œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ ์ดํ•˜์ธ ๊ฒฝ์šฐ, ์••์ถ•ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ if len_s < 3 ๋ฌธ์„ ํ†ตํ•ด ์˜ˆ์™ธ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

 

โ–ถ ''.join([List]) ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ์›์†Œ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.

'Programming > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Level 2] ์กฐ์ด์Šคํ‹ฑ  (0) 2020.10.28
[Level 2] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ  (0) 2020.10.27
[Level 2] ๊ตฌ๋ช…๋ณดํŠธ  (0) 2020.10.06
[Level 2] ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก (Python)  (0) 2020.10.05
[Level 2] H-Index (Python)  (0) 2020.10.05