Problem Solving/Programmers

[Programmers] 2018 KAKAO BLIND RECRUITMENT[3차] : 압축

이진2 2021. 2. 13. 12:02

programmers.co.kr/learn/courses/30/lessons/17684

 

코딩테스트 연습 - [3차] 압축

TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]

programmers.co.kr

LZW 압축 방식을 사용해서 문자열을 압축하는 전형적인 파이썬 딕셔너리 활용 문제같다

2018년 카카오 코테 기출은 풀다보면 신기하다 정말 네가 카카오에 들어와서 과제 던져주면 해결할 수 있냐고 묻는 것 같은 느낌....??

problem solving이 문제해결능력으로 이어지는지 보려는 의도 같다

하지만 이 문제는 쉽기 때문에 뛰어난 능력을 요구하진 않았따

 

나는 맨 처음 딕셔너리를 초기화하고, 단순 이중 for문을 돌려주면서 일치하는 문자열이 있으면 색인 번호를 갱신하고 아니면 딕셔너리에 추가하는 방식으로 구현했다

def solution(msg):
    answer = []
    dic ={}
    cnt=1

    for i in range(0,26):
        dic[chr(i+ord('A'))]=cnt
        cnt+=1
    print(dic)

    i=0
    while i<len(msg):
        num=0
        j=i+1
        while j<len(msg)+1:
            s=msg[i:j]
            if s in dic:
                num=dic[s]
            else:
                dic[s]=cnt
                cnt+=1
                break
            j+=1
        if num!=0:
            answer.append(num)
        i=j-1
    return answer