무손실 압축 알고리즘 중 하나
데이터를 반복되는 문자열 단위로 압축
사전(dictionary)을 활용해 문자열을 코드로 치환
🧠 작동 원리 요약
1. 초기 사전 생성
- 입력에 나오는 모든 단일 문자를 포함한 사전 생성
예: A~Z까지 포함한 256개 문자 (ASCII 기준)
2. 문자열 분석 및 사전 확장
- 현재 문자열
w
와 다음 문자c
를 붙인w+c
가
사전에 존재하면 → 계속 확장
- 존재하지 않으면
w
의 코드 출력w+c
를 사전에 추가w ← c
로 갱신하여 계속 진행
3. 압축된 결과 출력
- 문자열을 숫자 코드로 치환하여 출력
- 압축 효율이 좋은 이유:
자주 나오는 패턴은 짧은 코드로 대체됨
🔧 예시
입력 문자열:
ABABABA
처리 과정 요약:
단계 | w | c | w+c | 사전에 존재? | 출력 | 사전 추가 |
1 | A | B | AB | ❌ | A (0) | AB (256) |
2 | B | A | BA | ❌ | B (1) | BA (257) |
3 | A | B | AB | ✅ | — | — |
4 | AB | A | ABA | ❌ | AB (256) | ABA (258) |
5 | A | — | — | — | A (0) | — |
최종 출력
0, 1, 256, 0
📚 장점 vs 단점
장점 | 단점 |
무손실 압축 가능 | 처음엔 압축 효율 낮음 |
텍스트에 특히 효율적 | 사전 크기 제한 필요 |
구현이 상대적으로 단순 | 바이너리 파일에선 비효율적일 수 있음 |
💡 활용 예시
- GIF 이미지 포맷
- UNIX 압축 명령어
compress
- 팩스, 모뎀 통신 등에서 활용
Share article