본문 바로가기
내가 발표한 것들

항해99 4기 11/12(금) 발표 - 알고리즘 : 칼을 뽑는 법, 무라도 써는 법

by Zabee52 2021. 11. 18.

 항해99 과정을 하던 중, 문법은 빤히 아는데도 알고리즘을 어떻게 대하는지 모르는 분들이 보였다. 그 분들을 보면서 나도 프로그래머스 레벨 1~2 정도밖에 풀지 못 하는 초보자일 뿐이지만, 최소한 내가 어떤식으로 문제를 대하는지, 그리고 복잡한 문항에 대해 어떻게 해야 느리지만 착실하게 정답으로 나아갈 수 있는지를 알려드리고 싶었다. 정답까지 도달하는건 못 할지라도, 칼을 차고 있으면 뽑는 법도 알아야하고 뽑은 김에 무라도 써는 법을 알아야 하지 않겠는가.

 

 알고리즘이야 항상 일정한 루틴으로 구현을 해왔었기에 어떤 과정을 통하는 것인지 설명하는것은 쉬웠다. 고민이 되었던 점은, 마지막에 기능들을 구현하는 과정. 이걸 설명할 필요가 있을까. 하는 생각이었다. 세상 알고리즘문제 널리고 쌓였는데 그 중 하나 구현하는거 보여줘봤자 의미가 있을까 하는 의문이 든 것이다. 그래서 문제를 풀면서 시연하겠다는 처음의 계획을 수정하고, 좀 더 이론적으로, 그리고 현실적으로 다가갈 수 있도록 하고 싶었다.

 

 결국 알고리즘 풀이의 핵심은 이 것이다. 문제 풀이 과정에서 구현할 기능을 정하고, 기능을 만들어 나갈 땐 하나하나의 스코프에 집중하며 풀어나가는 것. 문제를 전체적으로 보는게 아니라 단위별로 기능을 구분해 구현의 난이도를 낮추는 것이다. 스텝바이스텝으로 해나가다보면 풀리도록 만드는 것이다. 그래서 나는 사람들에게 이 기능들을 어떻게 나누어 구현할 지 알려드리고자 했다. 이렇게 하면 내가 시연을 한 문제가 아닌 다른 문제를 만나더라도 풀어나갈 수 있는 능력을 얻을 수 있을 것이라고 생각했다.

 

 방향을 정하고 PPT를 만들었다. 과정은 생략한다. 귀찮으니까.

 

응애도 할 수 있는 알고리즘.pdf
2.37MB

 

핵심 내용은 간단하다.

 

1. 변수 정의하기

2. 함수로 흐름 대략적으로 써보기

3. 구현하기

 

 흐름정도는 고민만 하면 누구나 써낼 수 있다. 흐름을 파악하고나면 각자 함수들에 찾아가 그 흐름 만큼만 구현하면 된다. 그냥 무작정 짜는거랑 뭐가 다른가 생각할 수 있지만, 스코프를 좁혀놓고 구현해야 하는 기능의 범위를 정해놓으면 그것만으로도 구현 난이도가 크게 감소하는 요인이 된다.

 

 물론 나도 초보자기에 더 좋은 방법이 있는데 내가 찾아내지 못 한 것일수도 있다. 나보다 잘 하는 사람이 나와서 이거 아니다 하면 웬만하면 당신의 말이 맞을 것이다. 그래도 아예 알고리즘을 처음 접하는 사람들에게는 분명히 도움이 될 것이라고 생각한다. 초보자는 의외로 초보자가 잘 가르친다.

 

댓글