분할정복
개발을 배우다 보면 문제 해결 알고리즘의 가장 기본이 되는 분할 정복이라는 개념을 배우게 된다. 영어로는 Divide and conquer 라고하며 개념을 설명하자면 어떤 하나의 커다란 문제를 바로 해결하지 않고 작은 여럿의 문제로 쪼갠 뒤에 해결된 해들을 더해 하나의 커다란 문제의 정답을 구하는 방법이다.
이해가 안간다고? 예를 들어보자.
가장 쉬운 예시로는 일반적으로 정말 많이 사용하는.. 우리들이 배웠던 곱셈의 방법이 있다.
2 곱하기 3의 정답을 구하는 것은 쉽다. 하지만 12521 곱하기 95437의 정답을 구하려면 한번에 계산하는 사람은 몇 없을 것이다.
아마 이런 방식으로 해결하겠지
12521
x 95437
----------
종이에 위와 같이 쓴 뒤에 가장 끝에 위치한 일의 자리의 곱셈을 먼저 구하고 그다음에 십의 자리를 곱하고... 천천히 한단계씩 문제를 해결하여 그 합을 구할 것이다. 그렇게 답 1194966677을 구하겠지.
이런 분할정복의 이론을 개발하면서 참 많이 사용했다.
인생
그러다 최근에 문득 이런 생각이 들었다. 이 개념이 참 우리 인생을 살아가는데 가장 기본이 되는 방식이지 않나? 그리고 이런 자세야 말로 참 도움이 되는 방식이지 않나?
살아가다 보면 목표와 계획이 생기기 마련이다. 그 목표들은 대부분 지금 당장 성취할 수 있는 문제가 아닐 때가 대부분이다.
내 경우로 예를 들자면
가장 먼저 떠오르는 인생 첫 목표는 아마 게임 개발자가 되는 것이었다.
그리고 게임 개발자는 내가 바란다고 바로 달성 가능한 목표가 아니었다.
그 목표를 세우고 게임 개발자가 되기 위해 일련의 과정을 밟아와서 지금의 개발자가 될 수 있었다.
가장 기본이 되는 C언어 배우기.
C언어를 배우는 것 역시 많은 세부 과정들이 있었다.
출력 먼저
조건분기 개념
반복문...
함수..
그러면서 논리적인 사고력을 기르고
게임 개발에 필요한 툴 공부하기.
등등...
뒤늦게 깨달았지만 나는 사실 개발자가 되기 위한 분할 정복들을 수행해 나가고 있던 것이었다.
이런 방법으로 목표에 접근하며 항상 쉽게 멈추고 포기하던 어린 내가
단계 단계 해나가며 처음으로 포기 없이 긴 계단을 오를 수 있었다.
여러분도 어떤 목표를 위해 정진하고 있다면 한번 그 문제를 해결하기 위한 작은 계획들이 뭐가 있는지 정리 해보는 것은 어떨지.
'개발자의 삶' 카테고리의 다른 글
[iOS] Firebase Crashlytics 버그 추적 팁 (0) | 2022.02.06 |
---|---|
FastLane을 도입해봅시다. (0) | 2022.01.25 |
Enum 좋아하는 개발자들 주의사항 (0) | 2022.01.20 |
개발자가 되고 싶은 비 전공자분들에게. (0) | 2021.12.26 |