COS PRO Python 기출문제
예전에
면접에서 이런 질문을 받았었다.
"알고리즘 중 어렵다고 생각되는게 있나요?"
8명의 경쟁자(?)들이 열심히 무엇이 어렵고 왜 어렵고...
길다면 긴 답변들이 내 귀를 스치고
드디어 내 차례가 왔다.
"... ... ... 없었는데요."
당당히 합격했던 기억이 있다.
천재 선배들이 이미 잘 만들어 놓은 알고리즘을
내가 다시 재탄생(?) 시키는 의미로 알고리즘-ng 을 위해 공부한다면
어려움이 분명 있으리라.
하지만,
그냥 난 이걸 어디에 어떻게 사용해야 할 것인지만
고민했다.
물론,
기본적으로 Sort, Dynamic, Greedy 등의 유명한 알고리즘에 대해서는
나도 공부하고 고민해 보았었다.
얼마전에,
COS PRO Python 자격증 시험에 응시해 보려고 서점을 들렸다가
책을 한 권 샀다.
거기에 1급 기출 문제 중에서
'n-소용돌이' 이라 이름의 문제를 풀면서
스스로 뜨끔했다.
약 30분 동안 풀이를 위한 시나리오를 주석으로 써내려갔다.
머리가 지끈했다.
총 10문제를 푸는데
이 문제 하나가 뇌리에 박혔다.
문제는 이렇다.
반환값은 아래 그림의 3개 값의 합이다.
사람마다 접근 하는 방식이 다를 것이라 예상한다.
주변 지인들에게 부탁해서 솔루션을 몇 개 받아보았다.
예상 그대로였다.
나는 30분을 고민하면서
의미있는 3줄의 주석을 남겼다.
>> #0시작, 4끝, 4시작, 0끝, 1시작, 3끝, 3시작, 1끝, 2시작
>> #0시작, 3끝, 3시작, 0끝, 1시작, 2끝, 2시작
>> #0시작, 2끝, 2시작, 0끝, 1시작
살짝 노가다(?) 느낌이 있다.
더 좋은 풀이를 위해서는 리팩토링이 필요했다.
리팩토링의 위대함과 힘겨움을 새삼... 느꼈다.
풀이는 따로 적어두지 않으련다.
끝.