목적 : 가설을 세우고 수학적, 논리적으로 무결한 근거를 마련할 수 있는 문제 대응력 키우기.
목표 : <Solved.ac> Class 5 기본 문제를 풀이하며 증명하는 과정을 기록하기.
전략 : 문제를 해결했다는 결과에 집중하기보다는 접근 과정에 집중하며 기록한다.
주의점
재미있게 하자. 습관적으로 강박을 갖는 경향이 있는데 이렇게 되면 단기적으로 어떤 성과를 거둘 수는 있어도 장기적인 관점에서는 손해다. 결정적으로 금세 지루해지고 재미가 없어진다.
동기
작년에 2023 알고리즘 레콩키스타라는 프로젝트를 시작하고 일주일만에 흐지부지됐던 경험이 있다. 이 프로젝트에 올해 다시 한번 도전해보려고 한다. 단, 조건을 조금 바꿔서!
이전 알고리즘 레콩키스타의 목적은 PS 감각의 회복(쥐뿔도 없지만..)이었으며, 목표는 <Solved.ac> Class 4 금장을 획득하는 것이었다. 당시에는 한 달이라는 기간을 두고 진행했었는데, 매일 꾸준히 한다는 생각을 하니 한 번 실패하는 순간 계속 미루게 됐다.
이에 이번에는 목표를 약간 달리 설정해봤다. 이번 알고리즘 레콩키스타의 목적은 단순하다. 바로 '문제 대응력', 수학과 논리를 곁들인 '문제 대응력'이다.
사실 전투 디자이너로 진로를 결정한 이상, 알고리즘은 더 이상 굳이 파고들 이유가 없다. 비단 비개발 직무를 떠나 프로그래머를 희망한다고 해도 마찬가지라고 생각한다.
이런 질문을 던져보자.
과연 알고리즘은 실무에서 노력한 것 이상의 효용을 보이는가?
내 대답은 '아니오.'다. 분명 배우지 않은 것보다는 낫긴 할 거다. 하지만, 실제 개발을 하는데 있어서 알고리즘이 정말 필수적이라고는 할 수 없을 것 같다.
이유는 단순하다. 주제 넘게 짧은 프로그래밍 경험으로 미루어볼 때, 나는 구현을 하면서 '음.. 이런 알고리즘을 활용해서 어떤 걸 구현해야겠군!'이라고 딱 잘라서 판단한 적이 없다.
그냥 어떤 걸 구현하다보니 특정 알고리즘과 유사해질 뿐, 구체적인 알고리즘에서 구현 방향을 확장하지 않았다는 이야기다. 굳이 시간 내서 공부하지 않더라도 계속 개발하다 보면 알음알음 다 알게 되는 것 같기도 하고..
그렇다면 우리는 왜 부족한 시간을 쪼개서 알고리즘을 공부해야 할까?
알고리즘 풀이는 애초에 구현이 아닌 '문제 해결 역량'을 키우는 데 초점이 맞춰져있기 때문이다. 이게 내가 비개발 직무를 희망함에도 알고리즘을 풀이하려는 이유다.
음.. 당연한 소리를 대단하다는 듯이 말하고 있는 것 같아 뭔가 좀 껄끄럽긴 한데, 가장 먼저 나부터 알고리즘을 오로지 프로그래머의 실무 역량만을 위한 것으로 생각하고 있었기에 이렇게 적어봤다.
잠시 옛 이야기를 하자면, 나는 게임 디자인을 떠나서 살아가는 과정에 있어 수많은 문제들을 마주했었다. 아마 이 글을 읽고 있는 당신도 마찬가지일 거라고 생각한다.
나는 그때마다 최선의 판단을 한다고는 했지만 돌이켜보면 멍청해보이는 선택을 한 게 적지 않다. 내가 '합리적'이라고 생각했던 선택이 사실은 어떠한 짜임새 있는 논리나 검증된 근거가 없는 어리석은 선택이었다는 걸 깨닫곤 한다.
이렇게 나는 합리적인 선택을 한다고 착각하는 존재이기에, 나에게 문제 해결을 위한 역량이 필요하다고 생각했다. 이 때문에 자연스레 필요 이상으로 체계와 흐름에 집착하기도 했고 말이다. (긍정적인 효과만큼이나 악영향을 끼치긴 했지만..)
아무튼 이런 문제 해결 역량을 기르기 위해 가장 좋은 게 무엇일지 고민을 해봤는데, 아무리 생각해도 알고리즘 풀이가 그 답인 것 같다.
만약 직무에 맞게 전투 디자인을 하면서 문제를 찾고, 그 문제를 풀이하는 과정을 하나하나 테스트한다고 가정하면 한 사이클을 돌리는데 너무 많은 시간이 소모된다.
가장 좋은 건 얕게나마 구현에 대한 역량을 키우면서 알고리즘 풀이로 계속 문제 해결 역량을 키워놓는 것. 그리고, 해당 문제 해결 역량을 전투 디자인 과정에서 폭발시키는 것이라는 생각이 든다.
사실 게임 디자인 과정에서의 고민과 프로그래밍 과정에서의 고민이 많이 다르기에, 이게 정말 효과적일지는 의문이기는 한데 일단 뭐.. 대단한 효과를 보자고 시작하는 게 아니니 그냥 한 번 해보려고 한다. 어차피 남는 시간에 심심할 때 하나씩 풀어보자고 시작하는 거니까..
음.. 내가 지향하는 디자이너로서의 롤에 프로그래밍적 사고가 중요하기도 하고.. 아몰랑 구구절절해지기 전에 일단 고! 갑시다!
시작 상태
'개발 > 알고리즘' 카테고리의 다른 글
백준 11444번 : 피보나치 수 6 (0) | 2024.03.09 |
---|---|
백준 1918번 : 후위 표기식 (0) | 2024.03.08 |
백준 14940번 : 쉬운 최단거리 (0) | 2024.03.05 |
백준 11659번 : 구간 합 구하기 4 (0) | 2024.02.20 |
백준 1676번 : 팩토리얼 0의 개수 (0) | 2024.02.20 |