알고리즘은 왜 공부해야 할까
내가 알고리즘 공부를 하는 이유는 기업에서 진행하는 코딩테스트 대부분이 알고리즘 역량 테스트이기 때문에 “보다 좋은 취업 기회를 얻기 위해서”였다. 이제 기업에서 진행하는 코딩 테스트는 어느 정도 풀이가 가능하지만 boj 문제난이도가 플래티넘만 되도 버벅인다. 더 효율적인 알고리즘을 작성하기 위해 공부를 다시 시작한다. 알고리즘을 다시 공부하기에 앞서 알고리즘을 공부하는 이유를 기업 코딩테스트를 제외하고 생각해본다.
“알고리즘 문제 해결 전략”
이라는 책으로 틈틈이 공부해 볼 예정이다. 이 책은 알고리즘 기초가 아닌 중급자용이다. 또한 C++이라는 점이 마음에 든다.
프로그래밍은 어렵다. 하지만, 재미있다.
프로그래밍을 잘하는 사람과 못하는 사람의 생산성 차이는 스무배가 난다는 우스갯소리가있다. 컴퓨터 과학 교육과정이 프로그래밍의 기술과 지식만 가르칠 뿐 응용 능력이 부족해서이다. 개념과 이론이 부족한 상태에서 결론을 배우게 될 때 생기는 결과이다. 개념과 이론이 생기게 된 통찰을 깨달을 수 있는 좋은 방법이 프로그래밍 대회이다. 프로그래밍은 어려운만큼 재미있다. 문제가 풀리지 않을 때의 괴로움은 문제가 풀렸을때 기쁨과 그 과정에서 얻은 통찰을 자신의 것으로 만들었을 때 느끼는 뿌듯함에 비하면 아무것도 아니다.
프로그래밍은 결국 문제해결이다.
프로그래밍은 자신이 사용하고 있는 프로그래밍 언어의 특성, 하드웨어와 운영체제에 관한 지식, 사용하고 있는 라이브러리 등 제약조건 안에서 요구사항을 이해하고 최선의 방법을 찾아내야 한다. 이를 문제해결능력이라 부른다. 이 문제해결능력을 훈련하기란 굉장히 어렵다. 이는 추상적인 능력이기 때문이다. 이 책에선 프로그래밍 대회가 가장 좋은 방법이라고 명시하는듯 하다. 즉, 짧은 요구사항을 주어진 시간안에 빠르게 작성하는 능력을 겨루는 대회의 경험으로 문제해결능력을 키울 수 있다고 제시한다.
최종 목표
프로그래밍 대회에 나가본다.