๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]2018 ์นด์นด์˜ค ์••์ถ•

by syLim___ 2023. 6. 22.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

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

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

programmers.co.kr


๋‘์‹œ๊ฐ„๋™์•ˆ ๊ฐœ๊ณ ์ƒํ•ด์„œ 50์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์งฐ๋Š”๋ฐ

์ œ์ถœํ•˜๊ณ  ๋ณด๋‹ˆ๊นŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ์ฝ”๋“œ๊ฐ€ ๊ฑฐ์˜ ๋‹ค ๋‚ด ์ ˆ๋ฐ˜์ด์—ˆ๋‹ค

 

ํ˜„ํƒ€

 

def solution(msg):
    answer = []
    mydict = list("0ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    
    idx = 0
    temp = 0
    prev=''
    cur = msg[idx]
    while idx+1 <= len(msg)-1:
        if prev != '':
            mydict.append(prev+cur)
        next = msg[idx+1]

        # ํ˜„์žฌ ์ž…๋ ฅ์ด ์‚ฌ์ „์— ์žˆ์œผ๋ฉด, ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์–ตํ•ด๋‘๊ณ  ์ž…๋ ฅ์— ๋‹ค์Œ ๊ธ€์ž ์ถ”๊ฐ€
        if cur in mydict:
            temp = mydict.index(cur)
        while True:
            next = msg[idx+1]
            if cur + next in mydict:
                cur += next
                idx += 1
                if idx >= len(msg)-1:
                    break
                next = msg[idx]
                temp = mydict.index(cur)
            else:
                next = msg[idx+1]
                break
                
        ## ๋งˆ์ง€๋ง‰ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ##
        if idx >= len(msg)-1:
            if cur in mydict:
                answer.append(mydict.index(cur))
            else:
                answer.append(len(mydict)+1)
            break
        
        # ๊ธฐ์–ตํ•ด๋‘” ์ธ๋ฑ์Šค ๊ฐ€์ง€๊ณ  ์ƒ‰์ธ๋ฒˆํ˜ธ ์ถœ๋ ฅ
        answer.append(temp)

        # ํ˜„์žฌ ์ž…๋ ฅ๊ฐ’ update
        prev=cur
        if idx+1 <= len(msg)-1:
            cur = msg[idx+1]
        idx += len(cur)

    ## ๋งˆ์ง€๋ง‰ ํ•œ ๊ธ€์ž ๋‚จ์•˜์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ##
    if len(cur) == 1:
        if cur in mydict:
            answer.append(mydict.index(cur))
        else:
            answer.append(len(mydict)+1)

    return answer

 

๋„ˆ๋ฌด ์–ด์ง€๋Ÿฝ๋”ฐ

 

์ผ๋‹จ ๋‚ด๊ฐ€ ์ฝ”๋“œ ์–ด๋–ป๊ฒŒ ์งฐ๋Š”์ง€๋งŒ ๊ธฐ๋กํ•ด๋‘๊ณ 

์ •์‹ ์ฐจ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด ์ฝ์–ด๋ด์•ผ๊ฒ ์Œ

728x90