https://school.programmers.co.kr/learn/courses/30/lessons/17684
1. 해결방법
생각보다 헤맸던 문제이다.
2시간 정도 걸렸다;;
처음 접근하는 방법이 중요하다. 다른 방법으로 시도한 끝에 결국 딕셔너리를 이용하는게 맞다고 판단이 되어서 딕셔너리를 사용하였다.
1. msg 문자열의 각 알파벳의 아스키코드 값을 dict라는 딕셔너리에 저장한다.
2. left와 right을 두어서 각 문자열이 dict에 있는지 없는지 판단해야한다. (w, c)
3. w와 c를 구해서 더한 값이 dict에 있다면 right + 1을 해서 검사 범위를 더 넓힌다.
4. 만약 w + c가 dict에 없다면 새로운 사전을 추가시킨다.
5. 추가 시키면 left와 right 값을 새로이 갱신한다.
2. 정답코드
def solution(msg):
answer = []
dict = {}
for m in msg:
dict[m] = ord(m) - 64
left, right = 0, 1
new_number = 27
while True:
w = msg[left: right]
if right != len(msg):
c = msg[right]
if w + c in dict:
right += 1
continue
if w + c not in dict:
dict[w + c] = new_number
new_number += 1
if w in dict:
answer.append(dict[w])
left = right
right = left + 1
else:
if msg[left : right] in dict:
answer.append(dict[msg[left : right]])
break
return answer
'Algorithm > 카카오' 카테고리의 다른 글
[2022 KAKAO BLIND RECRUITMENT] 주차 요금 계산 (0) | 2022.11.24 |
---|---|
[2022 KAKAO BLIND RECRUITMENT] k진수에서 소수 개수 구하기 (0) | 2022.11.24 |
[2018 KAKAO BLIND RECRUITMENT] [1차] 뉴스 클러스터링 (0) | 2022.11.23 |
[2019 카카오 개발자 겨울 인턴십] 튜플 (0) | 2022.11.23 |
[2020 KAKAO BLIND RECRUITMENT] 기둥과 보 설치 (1) | 2022.10.25 |