brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Jun 05. 2019

Python: n-소용돌이

COS PRO Python 기출문제

예전에

면접에서 이런 질문을 받았었다.

"알고리즘 중 어렵다고 생각되는게 있나요?"


8명의 경쟁자(?)들이 열심히 무엇이 어렵고 왜 어렵고...

길다면 긴 답변들이 내 귀를 스치고

드디어 내 차례가 왔다.


"... ... ... 없었는데요."


당당히 합격했던 기억이 있다.


천재 선배들이 이미 잘 만들어 놓은 알고리즘을

내가 다시 재탄생(?) 시키는 의미로 알고리즘-ng 을 위해 공부한다면

어려움이 분명 있으리라.


하지만,

그냥 난 이걸 어디에 어떻게 사용해야 할 것인지만

고민했다.


물론,

기본적으로 Sort, Dynamic, Greedy 등의 유명한 알고리즘에 대해서는

나도 공부하고 고민해 보았었다.


얼마전에,

COS PRO Python  자격증 시험에 응시해 보려고 서점을 들렸다가

책을 한 권 샀다.


거기에 1급 기출 문제 중에서

'n-소용돌이' 이라 이름의 문제를 풀면서

스스로 뜨끔했다.


약 30분 동안 풀이를 위한 시나리오를 주석으로 써내려갔다.

머리가 지끈했다.


총 10문제를 푸는데

이 문제 하나가 뇌리에 박혔다.


문제는 이렇다.

소용돌이 모양

반환값은 아래 그림의 3개 값의 합이다.

1 + 9 + 5


사람마다 접근 하는 방식이 다를 것이라 예상한다.

주변 지인들에게 부탁해서 솔루션을 몇 개 받아보았다.

예상 그대로였다.


나는 30분을 고민하면서

의미있는 3줄의 주석을 남겼다.



>> #0시작, 4끝, 4시작, 0끝, 1시작, 3끝, 3시작, 1끝, 2시작

>> #0시작, 3끝, 3시작, 0끝, 1시작, 2끝, 2시작

>> #0시작, 2끝, 2시작, 0끝, 1시작



살짝 노가다(?) 느낌이 있다.


더 좋은 풀이를 위해서는 리팩토링이 필요했다.

리팩토링의 위대함과 힘겨움을 새삼... 느꼈다.


풀이는 따로 적어두지 않으련다.


끝.

작가의 이전글 AWS: 요금정보 API
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari