-
[🥰프로그래머스] 압축 (2018 KAKAO BLIND RECRUITMENT)Algorithm/1일 1코테 2022. 10. 8. 17:38반응형
나의 풀이
def solution(msg): # 알파벳 사전을 만들기 위한 스트링 alphabet_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 알파벳 사전 만들기... enumerate는 0부터 시작해서 1씩 더해줌 _dict = {} for i, a in enumerate(alphabet_string): _dict[a] = i+1 answer = [] l = 0 r = l+1 # msg[l:r]이 이미 사전에 있으면 하나 더 해줌 (K->KA) # 없으면 (KA) 사전에 넣어주고 이전 글자 (K)를 answer에 더해줌 # 다만 이미 사전에 있어도 마지막인 경우 (KAKAO 중 O) answer에 더해주지 않아서 따로 처리해줌 while r <= len(msg): if msg[l:r] in _dict: if r == len(msg): answer.append(_dict[msg[l:r]]) r += 1 else: _dict[msg[l:r]] = len(_dict) + 1 answer.append(_dict[msg[l:r-1]]) l = r-1 r = l+1 return answer
다른사람 풀이
def solution(msg): answer = [] # chr를 활용하여 알파벳 사전 구축 tmp = {chr(e + 64): e for e in range(1, 27)} num = 27 # map의 value while msg: tt = 1 while msg[:tt] in tmp.keys() and tt <= msg.__len__(): # 현재 존재하는 key 찾기 tt += 1 tt -= 1 if msg[:tt] in tmp.keys(): answer.append(tmp[msg[:tt]]) tmp[msg[:tt + 1]] = num # 새 키 만들기 num += 1 # 다음 키를 위해 하나 더하기 msg = msg[tt:] return answer
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[😭 leetcode] 976. Largest Perimeter Triangle (0) 2022.10.12 [😭 leetcode] 334. Increasing Triplet Subsequence (0) 2022.10.11 [🥰프로그래머스] 신고 결과 받기 [2022 KAKAO BLIND RECRUITMENT] (0) 2022.10.06 [😭 leetcode] 15. 3Sum (0) 2022.07.25 [🥰프로그래머스] 폰켓몬 (찾아라 프로그래밍 마에스터) (0) 2022.02.07