알고리즘 공부를 하며

sun202x·2022년 8월 5일
0

알고리즘

목록 보기
1/49

알고리즘의 중요성을 얼마나 알고 있는가?

위와 같은 질문을 이직 준비 이전에 받았다면 잘 모르겠다고 말했을 것이다. 알고리즘이라는 단어를 처음 들었던 것은 고등학교 시절 로봇 동아리 활동을 하면서 였다. 당시 나는 로봇을 통해 주어진 과제를 수행할 때 규칙을 정의하는 것이 알고리즘인 것이라고 알게 되었다.

그 때의 느낌은 어떤 문제를 해결하기 위해 절차적으로 코드를 나열하는 것. 그저 C언어로 조잡한 4칙연산을 통해 나열하는 것이 전부라고 생각했고 그렇게 하여 문제를 해결할 수 있었다. 그런 생각이 지금까지 이어져와 알고리즘이란 그저 복잡한 데이터 연산을 위해 효율적인 처리를 하는 것이라는 생각 정도에 그쳤고, 지금 내가 일하고 있는 프론트엔드 영역에서는 동떨어진 기술이라고 생각하게 되었다.

그렇게 나는 알고리즘을 잘 모르면서 유수의 IT 회사에서 시행하는 코딩테스트에 대해 회의감을 느꼈다.(그저 실무만 잘 해결하면 된다고 생각했다)

얼마나 무식한 생각인가?

그러나 지금은?

사람은 잘 모르는 것이 있으면 그것에 대해 함부로 생각하지 말아야 한다. 내가 딱 그 경우였고 이직을 위한 알고리즘 공부를 하면서 그전까지 잘못된 생각을 하고 살았다는 것을 느끼게 되었다.

그래서 알고리즘은?

IT 서비스들의 목적은 제각각 다르지만 그 서비스들이 목표로 하는 가장 기본적인 것은, 데이터 처리라고 생각한다. 실생활에 존재하는 데이터들을 정보로 가공하여 유용한 서비스들을 제공하는 것. 그것이 IT 서비스들의 기본 목적인데 알고리즘은 이런 데이터 처리를 위한 가장 근본적인 생각들이라고 느꼈다.

실무를 진행하면서 알고리즘의 기본개념을 이해하지 못하고 작성한 코드들의 지향점은 효율적인 데이터 처리보다 가독성, 재사용성이 좋은 형태였다.

그정도만 처리해도 프론트엔드에서는 괜찮은 수준이라고 생각했었으나, 지금은 그렇게 생각하지 않는다. 알고리즘 공부를 통해 데이터 처리에 대한 효율과 다양한 시각을 배울 생각이다.

학습계획

우선은 하루에 한 문제씩 미디움 난이도의 알고리즘을 풀면서 기록을 할 생각이다. 자료구조도 다시 공부하면서 알고리즘 문제에 적응해보려고 한다. 아래와 같은 방식으로 알고리즘을 정리해볼까 한다.

  1. 내가 생각했던 접근 방법 정리
  2. 해결방법 또는 좀 더 효율적으로 보이는 해결방법 정리

1번은 부끄럽지만 솔직하게 작성할 생각이다. 그렇게 해야 2번 방법을 정리할때 조금이라도 더 기억에 남을 것 같다.

profile
긍정적으로 살고 싶은 개발자

0개의 댓글