본문 바로가기

~2009.12.31/talk about it

개발자, 알고리즘에 대한 우울한 기억.

알고리즘.  뭐.. 그런거.

나는 알고리즘을 거의 다 잊은 듯 합니다.
사실 지난주까진 내가 배운 대부분의 알고리즘을 머리속에 넣고 있다고 생각했었습니다.
생각만 했었지요.
학생 때, 그리고 새로운 몇몇 알고리즘 책이 나올때마다 사서 읽고 연습도 하고 했었지요.

자, 지난주에 경력직 면접을 보면서 저에게 '소수' 구하는 알고리즘을 물어봤습니다.
네, 뭐 그정도 쯤이야 하며 설명하던 찰나.. '소수'구하는 로직이 기억나지 않았습니다.
설마.. 소수 알고리즘을.. 하며.. 당황하던차에 소수의 정의도 정확하게 기억하지 못하는
스스로를 깨닳았습니다.

소수, 1과 자신으로 나누어지는 수를 제외한 더 이상 나누어 지지 않는 수.
네, 이게 소수죠. 더 이상 나누어지지 않는 수라는 건 기억해 냈지만, 거기에 1이 아닌것은
기억도 못했습니다.

소수 구하는 기본 공식은 아주 간단합니다.
예를 들어,

수 n 이 소수인지 구하기 위해서는, 2 부터 시작하여 n-1 까지의 수로 나누어 지는지
확인을 하여 나눈 수의 몫이 0일 경우 소수가 아닌 것이 됩니다.

int sosu( int n ) {
   int i = 0;
   for( i = 2; i < n ; i++ )
       if( n % i == 0 ) return -1;  // 소수가 아님.
   return 0;  // 소수라면 0 리턴.
}
   
이렇게 됩니다.
이 알고리즘의 경우 n=97 이라면 루프가 96번 돌겠죠. 2부터 97까지.
네. 97은 소수 입니다.
소수가 아닌 수들은 중간에 -1 return 을 받을 테고요.

이것 말고도 몇가지 더 소수 구하는 알고리즘들이 즐비합니다.
간단하죠?

자, 저는 이 알고리즘을 알아내기 위해 책을 좀 들쳐봤습니다.
바보같죠. 네 몇일간 전 바보같은 줄 알았습니다.
몇일전 7년차 고참에게 알고리즘 기억하세요? 라고 뭍기 전까지.

과장님이 말씀하시길, 신입개발자 뽑는 것도 아닌데 별걸 다 물어본다고 하시더군요.
물론 알고리즘등이 중요한 개발이슈를 가지는 회사들도 있습니다.
그런 회사에겐 필수겠죠. 제가 그런회사로 이직하려는 건지 모르겠어요.
만약 그런회사라면, 저는 다시 미친듯이 공부해야 합니다.
저는.. 아마도 대다수의 알고리즘을 다 잊은 듯 하거든요.

아.. 여전히 약간 암울하긴 합니다.
얼마나 어떻게 공부를 해야 살아남는 곳이 될지.. 여기는 IT 바닥이라지요.
머리 좋은 초짜 개발자들은 몰려오고요!
매년 새로운 플랫폼과 개발방법론, 새로운 아키텍쳐, 새로운 언어.. 새로운 .. 새로운...
일자리는 줄어들고요... 후훗.
그렇습니다.

하지만. 힘내요! 우리에겐 연륜이라는게 있잖아요.. 쿨럭..>.,<
이게..도움이 되는 말인지..
다만, 늘 공부는 해야겠지요.

열정이 식지 않는 개발자로 남기를.