-풀이
def solution(msg):
#myDic = dict(zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ", range(1,27)))
alphaList = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
d = {}
for i in range(1, len(alphaList)+1):
d[i] = alphaList[i-1]
d = dict(map(reversed, d.items()))
answer = []
while True:
#msg가 d에 있으면 d[msg]의 value값을 answer에 append한다.
if msg in d:
answer.append(d[msg])
break
# i => 1~ msg길이+1
for i in range(1, len(msg)+1):
#msg 범위만큼이 d에 없으면
if msg[0:i] not in d:
#answer에 d[msg범위만큼]
answer.append(d[msg[0:i-1]])
#d에다가 없는 msg범위만큼의 value를 추가해준다.
d[msg[0:i]] = len(d)+1
msg = msg[i-1:]
break
return answer
-풀이 설명
[40분 no sol]맨 위 주석 달은 myDic은 한줄로 간단하게 1~26과 A-Z를 딕셔너리로 만들어주는 방법이다. 그냥 구현 문제인 것 같은데 이 문제를 보고 내가 슬라이싱과 반복문의 응용을 아직 완벽히 숙달하지 못했다고 느꼈다. 요즘 문제를 풀면서 내가 약한 부분을 맞닥뜨렸을 때 많이 헤매는 것 같다. 많이 공부해서 다져놔야 겠다.
'알고리즘' 카테고리의 다른 글
[입출력] 백준 2438 (별 찍기) (0) | 2021.10.17 |
---|---|
[입출력] 백준 10818 (최소, 최대) (0) | 2021.10.17 |
[입출력] 백준 8393 (합) (0) | 2021.10.16 |
[입출력] 백준 1924 (2007년) (0) | 2021.10.16 |
[입출력] 백준 2739 (구구단) (0) | 2021.10.16 |