알고리즘/문제

[문자열] 프로그래머스 압축

_Min 2021. 5. 5. 19:05

문제링크 programmers.co.kr/learn/courses/30/lessons/17684

 

 

 

[답코드]

def solution(msg):
    answer = []
    dict={}
    for i in range(0, 26):
        dict[chr(ord('A')+i)]=i+1
    
    i, num=0, 27
    w=''
    while i<len(msg):
        w+=msg[i]
        if w not in dict:
            answer.append(dict[w[:-1]])
            dict[w]=num
            num+=1
            w=''
            continue
        if i==len(msg)-1:
            answer.append(dict[w])
            
        i+=1
    return answer

 

 

[풀이법]

for 문과 while 문의 차이에 대해 다시 생각하게 해 준 문제였다

for 문은 순차접근인 반면, while 문은 i의 값을 내 생각대로 변경할 수 있어서 while 문을 사용하는 것이 유리한 문제였다고 생각한다

 

 

사실 문제를 처음 본 날 잘 안 풀려서 다음 날 다시 풀어봤다.

첫날에는 for문으로 풀 수 있다는 생각에 for문으로 계속 시도해서 안 됐었는데, while문으로 시도를 했으면 좀 더 빨리 풀지 않았나 싶다

개인적으로 그렇게 쉽지만은 않은 문제였는데 정답률이 95.8퍼 ㄷㄷㄷ,,,, 다들 대단하십니다

728x90