분류 전체보기 (165)
과학 꼼지락 (35)
수학 꼼지락 (41)
 시 꼼지락 (21)
언어 꼼지락 (6)
잡다 꼼지락 (61)
비밀 꼼지락 (0)
BLOG main image





수학 꼼지락
2006. 12. 23. 00:45
이번 금요일까지 학교에서 요즘 학기말고사를 보았습니다. 시험을보고 답안지 걷기 전에 생각이 났습니다. 컨닝을 할 때, 답만 순서대로 적어주면 너무 길어지니까 좀 줄일 수 없을까라고 말입니다. (물론 컨닝을 해 본 경험은 없습니다만.) 그럼 어떻게하면 더 줄일수 있을까요?

예전에 어디선가 봤는데 같은 수사 반복되면 "-개수"를 그 수 뒤에 쓰는 것이지요.
예를 들자면, "707777792243"이라는 숫자가 있다고 합시다. 이걸 압축하면
"707-592243"이 됩니다. 여기서 수가 두개만 반복될 경우에는 압축하는 방법이 오히려 전체 글자의 숫자수를 늘리므로 3개부터 사용하는 것이 좋습니다. 그런데 이 방법은 그다지 좋은 방법이 아니라고 생각됩니다. 임의의 긴 숫자가 있을 때, 연속해서 같은 수가 3개 이상 나오는 경우가 어디 많이 있겠습니까? 예를들어 12389718 같은 수가 있다면 압축이 전혀 불가능해집니다.

그래서 제가 생각해 낸 방법이 있습니다.

대응을 이용하는 것이지요.
a~y 까지를 1~25에 대응 시키고 A~Y까지를 26~50에 대응 시킵니다. z=0 에 대응시킵니다. Z의 경우에는 잠시후 사용하겠습니다.

z=0, a=1, b=2, c=3  ...  y=25, A=26 ,B,27 ... X=49, Y=50

이런식으로 말이죠.
위 방법을 이용해 긴 수가 있으면 두자리씩 끊어서 읽습니다.
"707777792243"의 경우 "70 77 77 79 22 43" 이런식으로 말입니다.
그런뒤에 50이 넘으면 50+*의 형태로 만든뒤 50은 Y로, *는 그 수에 대응하는 알파벳으로 치환을 시켜갑니다. 그러면 50이상의 수는 그대로 두 글자가 차지하고, 50이하의 숫자는 한 글자로 나타낼 수 있습니다. 이 방법의 문제점은 마지막 자리가 1개가 나오면 표현방법이 없어지는 것입니다. 이때 마지막 자리에서 두번째에 Z를 사용하면, "마지막에 표현된 글자는 실제 표현하는 수 만을 나타낸다"라고 약속하면 문제를 해결할 수 있습니다. 24515 의 경우 24 51 5 에서 5를 표현하려면 Ze 라고 표현하는 것이지요.

0~99까지의 수 중에서 반이 50이하의 수 이므로 이 압축방법의 압축률의 기대값은 75% 입니다. 컴퓨터에서 숫자가 나타내는 글자수의 75%로 그 수를 나타낼 수 있는 것이지요. 숫자나 알파벳이나 똑같은 한글자 차지하므로 효율적이 됩니다. 게다가 이 방법은 알파벳을 원하는데로 대응시킬경우 암호화까지 가능하다는 장점이 있습니다.

만약 한글을 이용한다면 어떻게 될까요?  한글의 자모를 조합하여 나타낼 수 있는 가지수는 무려 11172개! 깔끔함을 위해 10000자를 사용하면 한 글자로 숫자 네 개를 커버 할 수 있는 것입니다. 이 경우에는 네자리를 한 글자로 바꿔주니 압축률이 거의  25%에 가깝겠습니다. - 컴퓨터에서는 한글은 한 글자에 2Byte, 영어와 숫자는 1Byte이라서 이 방법을 컴퓨터에서 사용하면 압축률이 50%라고 할 수 있겠습니다.

근데 글을 다 쓰고보니 이 방법이 쓸데가 거의 없겠다 싶군요. 그냥 숫자를 무슨 정보가 담겨있다고 압축을 하겠습니까. 무슨 신호도 아니고 말입니다. 진짜로 컨닝할때 쓰려면 대응표를 일일이 그려서 해야되니까 시간도 많이 걸릴테고요.

'수학 꼼지락' 카테고리의 다른 글

이발사 면도 딜레마  (5) 2007.02.22
Huffman coding  (0) 2007.01.14
버스 정류장에서의 몬티-홀 딜레마  (7) 2007.01.05
압축  (2) 2006.12.23
snowall | 2006.12.26 00:55 신고 | 절대주소 | 수정/삭제 | 댓글
이정도까지 생각해낼 수 있는 잔머리를 가진 사람이라면, 그는 분명 머리도 좋을 가능성이 높을 것 같은데요...;
꼼지락 | 2006.12.26 21:18 신고 | 절대주소 | 수정/삭제
하하^^ 그래서 일까요? 저 방법을 써먹지(?)는 않았습니다. 근데, 저 생각할 시간에 한 자를 더 볼 걸 그랬습니다.
이름   
비밀번호 
홈페이지 
비밀글