문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17684
문제 접근(문제 분석 → 풀이 아이디어)
문제에서 주어진 LZW(Lempel–Ziv–Welch) 압축을 구현하는 문제이다.
1. 단어 길이 =1 로 사전 초기화
idx = 정수값 : 단어
2.사전에서 현재 입력과 일치하는 가장 긴 문자열 찾기 w
3. w 에 해당하는 사전 idx 번호 출력하고 , 입력에서 w 을 제거
4. 입력에서 처리되지 않은 다음 글자 (c)가 남았으면 , w+c 에 해당하는 단어를 사전에 등록
2. 로 돌아간다.
코드를 풀이할 때 적었던 플로우가 있나요?
1 . 길이 1 인 사전 초기화를 위해,
탐색할 입력 단어의 범위를 포인터 w_s 와 변수 w_l 로 초기화한다.
입력 단어 전체를 반복문을 사용해 탐색하기 (w_s + w_l ≤ len(입력단어)
탐색 단어(word[w_s : w_s + w_l] 가 사전에 존재하면
→ 최대 길이 w 단어 인덱스(prev_idx)을 사전 속 인덱스 값으로 업데이트
→ continue
사전에 존재하지 않으면
마지막 사전 인덱스 출력 리스트 answer 추가하기(예외처리)