728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
W : 비교할 문자열의 첫 인덱스
C : 비교할 문자열의 끝 인덱스
만약 있다면 while True 이기 때문에 다음으로 넘어간다.
넘어가면 c+=1 으로 언젠가 dic에 없는 단어가 나올 수 밖에 없다.
없는 단어가 나오면 dic에 추가하고 이전까지 있었던 문자열의 값을 dic에서 찾아 answer에 붙인다.
w(시작 인덱스)를 끝 인덱스와 동일하게 해준다.
코드 :
def solution(msg):
answer = []
dic = {}
# 알파벳 별로 인덱싱
for i in range(26) :
dic[chr(i+65)] = i+1
w,c = 0,0
# c는 끝 인덱스
while True :
c +=1
# 만약 끝났다면
if c == len(msg) :
answer.append(dic[msg[w:c]])
break
# 끝이 아닌데 없다면?
if msg[w:c+1] not in dic :
# 추가
dic[msg[w:c+1]] = len(dic)+1
answer.append(dic[msg[w:c]])
# 시작 인덱스를 변경
w = c
return answer
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]파일명 정렬_구현 (0) | 2022.10.20 |
---|---|
[Python/프로그래머스]n진수게임_구현 (0) | 2022.10.20 |
[Python/프로그래머스]방금그곡_구현 (0) | 2022.10.19 |
[Python/프로그래머스]후보키_조합 (0) | 2022.10.19 |
[Python/프로그래머스]외벽점검_구현 (1) | 2022.10.15 |