Page 11 -
P. 11
1.2 알고리즘과 코딩
컴퓨터 분야를 공부하다 보면 알고리즘이라는 말을 자주 듣게 됩니다. 그런데 알고리즘이 도대
체 어디에 쓰이고 있을까요? 사실 눈에 잘 띄지 않아 멀게만 느껴집니다. 하지만 우리는 알고
리즘의 혜택을 많이 보고 있는데, 대표적인 알고리즘이 압축 알고리즘입니다.
휴대폰이나 카메라로 사진을 찍으면 JPG라는 확장자로 저장되는데, 이 JPG(JPEG)가 압축 알
고리즘을 구현한 포맷입니다. 사진을 그대로 저장하면 용량이 너무 커서 저장 공간이 금방 차
버리겠지만 압축을 해서 저장하면 사진을 많이 보관할 수 있습니다. 휴대폰이나 카메라를 가진
사람들은 모두가 이용하는 알고리즘이죠.
압축 알고리즘을 좀 더 알아보겠습니다. 예를 들어 'aaaaabbbccccccddddddddd'라는 문자
열을 잘 보면 일정한 패턴이 있습니다. 같은 문자가 여러 번 반복되죠.
이걸 다음과 같이 문자 뒤에 반복되는 횟수를 적어주면 원래 데이터보다 길이가 짧아져서 저장
공간을 절약할 수 있습니다. 즉, 압축을 하는 것입니다.
▼ 그림 1-4 문자열 압축
5개 3개 6개 9개
aaaaabbbccccccddddddddd
23글자
a5b3c6d9
8글자
그림 1-4를 보면 23글자가 8글자로 줄었습니다. 'aaaaabbbccccccddddddddd'를 압축할 때
는 반복되는 문자의 횟수를 적어주고, 'a5b3c6d9'의 압축을 해제할 때는 숫자만큼 문자를 반
복해주자고 약속하면 됩니다. 생각보다 간단하죠? 컴퓨터에서 쓰이는 압축 알고리즘도 이러한
방법을 사용하고 있습니다(이 방식을 RLE(run-length encoding)라고 하며, PCX 그림 파일 포
맷에도 쓰였습니다. 요즘은 좀 더 다양한 상황에 대응하고 압축 효율을 높이기 위해 훨씬 복잡
한 알고리즘을 사용합니다).
018 프로그래머를 향한 출발점 COS Pro 2급
cos 파이썬_07.indd 18 2018-02-05 오후 4:03:37