알고리즘 라이프 - 일상 속 스마트한 선택을 위한
알리 알모사위 지음, 정주연 옮김 / 생각정거장 / 2017년 12월
평점 :
절판


소프트웨어 쪽을 전공하지 않았지만 지금 프로그래밍 관련된 일을 하고 있습니다. 그러다보니 알고리즘에 대해 제대로 공부한 적도 없었죠. 그러다 이 책의 컨셉을 읽고 관심이 생겼습니다. 사실 알고리즘은 컴퓨터 공학에서 사용하는 것인데 이것을 일상생활에서 적용할 수 있다는 게 흥미로웠죠. 책에서는 일상생활에서 일어날 수 있는 사건들에 대해 알고리즘을 적용하여 좀 더 효율적으로 문제해결하는 방법들을 알려주고 있습니다.


쌓인 빨래더미에서 양말의 짝을 맞추는 일은 저도 일주일에 한번씩은 경험합니다. 다만 양말의 갯수가 그리 많지 않기 때문에 알고리즘을 적용할 필요성은 없죠. 그러나 '마리와나'처럼 산더미 같은 빨래에서 양말을 찾아야 한다면 이야기는 달라질 것입니다. 방법1은 빨래더미에서 양말 한쪽을 찾아 놓고 다른 양맬을 꺼내서 짝을 찾는 방법입니다. 방법2는 '양말 한짝을 꺼내놓은다음 다른 양말을 꺼냅니다. 그 양말이 짝이 맞으면 맞춰놓고 맞지 않으면 짝 없는 양말 줄에 따로 놓되 색깔이나 크기가 같은 것들을 모아'두는 것이죠. 방법2는 사람의 기억력을 사용합니다. 방금 전에 양말을 꺼내면서 본적 있는 양말인지 아닌지 기억하고 있기 때문에 좀 더 빠르게 양말의 짝을 맞출 수 있습니다. 이를 키값 짝짓기라고 합니다. 이 경우 키는 색깔입니다. 

두번째 사례도 흥미롭습니다. '폭탄세일을 대비해 백화점 앞에 노숙하고 있는 이피의 목표는 백화점에 제일 먼저 들어가서 자신에게 맞는 셔츠를 다 쓸어담는 것'입니다. 옷걸이가 백화점에 꽉 찰만큼 길다고 했을 때 어떻게 하면 효율적으로 자신에게 맞는 셔츠를 찾을 수 있을까요? 방법1은 옷걸이 한쪽 끝에서 다른쪽 끝까지 차례대로 찾는 것입니다. 방법2는 옷걸이 중앙지점에서 시작해 셔츠가 자신의 사이즈보다 크면 왼쪽을, 작으면 오른쪽을 찾는 것입니다. 이는 '셔츠가 크기순으로 옷걸이에 정렬되어 있을 가능성이 높다는 것'과 '이피가 보통 크기의 셔츠를 입기 때문에 옷걸이 중앙 부분에 걸려있을 가능성이 높다'는 것을 활용한 것입니다. '중앙에서 시작해 왼쪽이나 오른쪽으로 이동하여 검색하고 매번 검색할 집합을 나누는 것이 로그시간 알고리즘에서 사용하는 전형적인 방법'이라고 합니다. 

허리가 아픈 이안에게는 시장에 장보러가는 횟수를 최소화하는 것이 목표입니다. 방법1은 부족한 품목이 있을 때마다 장을 보는 것입니다. 방법2는 부족한 품목의 목록을 작성해두고 목록이 일정한 양이 될때만 시장에 갑니다. 아니면 꼭 필요한 식품, 킷캣바 같은 것이 떨어졌을 때 장을 보러가는 방법입니다. 이 사례에서는 '스택'을 활용하는 방법을 소개하고 있습니다. 스택은 '아랫쪽에 얼마나 많은 것이 쌓여있든 가장 위에 놓인 항목에만 관심을 두는 경향을 최대한 활용'합니다. 이안의 경우 '부족한 물품 항목들이 그의 인지적 스택에 저장되어 있습'니다. '이안이 그 스택에 킷캣 초코바를 추가하면 스택이 빌때까지 최상위의 것으 반복적으로 제거하는 것'입니다. 

그외에도 음악가들을 정복하는 방법, 쏟아진 우편물들을 정리하기, 빠르게 미로 탈출하기 등 여러 상황에 대해 알고리즘을 적용할 수 있는 것들을 소개합니다. 비교적 쉽게 쓰여졌지만 알고리즘이 뭔지 모르는 분들에게는 조금 어려울 수도 있을 것 같아요. 하지만 일상에서도 이처럼 알고리즘을 이용해 좀 더 효율적으로 문제를 해결할 수 있다는 것을 알게 되었네요. 여기 사례들 뿐만 아니라 저의 일상생활에서도 알고리즘을 활용해 좀 더 효율적으로 문제를 풀 수 있는 방법을 고민해봐야겠네요. 잘 읽었습니다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo