본문으로 바로가기
728x90
반응형

안녕하세요. letitkang입니다.


요즘 부쩍 알고리즘의 중요성을 알게 되었고, 알고리즘에 대한 공부를 하고 싶었습니다.


예전에 보던 알고리즘 책을 찾게 되었고, 포스팅도 할겸, 알고리즘 공부를 할겸 일석이조의 효과를 누려보겠습니다.


책의 제목은 '프로그래밍 대회에서 배우는 알고리즘 문제 해결전략1' 입니다.


예전에 보다가 너무 어려워서 때려치운 기억이 납니다.


지금은 2년정도의 회사 생활을 하면서 실무 경험을 쌓았으니, 예전과는 좀 다르겠죠? 아니, 달라야됩니다.


지금부터 정리할 겸, 포스팅을 시작하겠습니다.


 

 

 



프로그맹은 참 어렵습니다. 4년동안 컴퓨터공학과에서 수업을 듣고, 졸업을 한 학생들이라도 프로그래밍하면 치를 떠는 학생들도 많고, 코드 한 줄 제대로 못 짜는 사람들이 수두룩 합니다.


그로 인하여 취업을 하게 되었을 경우, 기업들에서는 많은 불평이 쏟아져 나오고 있습니다.


"잘하는 사람과 못하는 사람의 생산성 차이가 20배 이상이 난다"고 합니다. 다른 분야보다 컴퓨터공학과에서 이런 말은 분명히 현실성 있습니다.


근본적 문제는 학습의 문제 입니다.


대부분 교육 과정에서 프로그래밍의 기술과 지식만을 가르칠 뿐, 이것을 응용 하는 것에 대해서는 가르쳐주지 않습니다. 자신의 몫이죠.


이렇게 교육을 하게 되면, 문법과 사전만으로 언어를 배운 사람과 다를 바 없습니다.


그렇게 된다면, 좋은 글을 쓰지 못하겠죠.


확실히 문제가 있긴 합니다.




이런 문제의 해결책은 바로 프로그래밍 대회을 통해서 경험과 깨달음을 얻는 것이 좋은 통로가 된다고 합니다.


저같은 경우에는 프로그래밍 대회는 한번도 나가보지 않았습니다.


기껏해야 알고스팟에 있는 문제를 좀 풀어본 수준이죠.


여기서 공감을 했던게, 알고스팟의 문제를 몇문제 풀어 보았는데, 우연히 실무에서 바로 적용이 되었습니다.


또한, 그 후부터는 코딩을 할 때나, 설계를 할 경우에도 어떻게하면 좀더 쉽고, 빠르게, 심플하게 할지에 대해 생각을 많이 하게 되었고, 꼭 종이에다가 적어본 후에 작업을 하기 시작했습니다.


이것이 습관화가 되더라구요.


 

 

 



또한 프로그래밍 대회에서는 공정하고, 즉각적인 피드백이 나오므로, 학습하는데 재미도 있을 것이라고 합니다.


이 책에서 많은 것을 배우고, 많은 성장을 하여 실력있는 프로그래머, 개발자가 되어 봅시다!




프로그래밍은 해결입니다.


어떤 문제가 주어 졌을 경우, 많은 제약 조건과 요구사항을 이해하고, 최선의 방법을 찾아내는 능력이 바로 분야를 막론하고 좋은 프로그래머가 되기 위한 조건 중의 하나입니다.


비유하자면 프로그래머가 사용하는 언어나 라이브러리, 알고리즘에 대한 지식들은 퍼즐의 조각이고, 해결 능력은 적재적소에 퍼즐 조각을 배치하고, 이들을 연결하여 큰 그림을 만드는 능력이라고 할 수 있습니다.


즉, 이러한 능력을 기르려면 바로 프로그래밍 대회! 대회! 대회입니다.




프로그래밍 대회에 참가하는 것은 문제 해결 기술을 연마하기 위한 가장 좋은 방법이라고 할 수 있습니다.


물론 다른 방법도 많겠지만, 직접 참가 함으로써 자신의 위치, 자신의 실력 등을 평가할 수 있습니다.


프로그래밍 대회의 문제는 현업에서의 요구사항과 아예 다릅니다. 여기서 배울 수 있는 것들을 나열해보겠습니다.


1. 여기의 프로그램들은 그래픽 인터페이스를 전혀 사용하지 않고, 단순히 텍스트 파일을 읽어들이고 출력합니다. 그렇기 때문에, 그래픽이나 인터페이스 등을 신경쓰지 않고, 문제 해결에만 집중을 할 수 있습니다. 현업과는 완전 다른 부분입니다.


2. 시간 제한과 메모리 제한이 있습니다. 시간, 메모리가 제한을 넘어서 버리면, 그 문제는 틀렸다고 처리하게 됩니다. 까다롭죠? 프로그래밍 대회의 문제들은 알고리즘을 신중하게 설계를 해야지 시간, 메모리에 대한 제한을 만족시킬 수 있습니다. 문제 해결 능력이 정말 중요합니다. 알고리즘에 대한 이해와 응용 능력이 상당히 중요합니다.


3. 정답과 오답의 여부가 명확히 가려지기 때문에, 속시원합니다. 현업같은 경우에는 단위 테스트나 코드 리뷰로 문제점을 찾거나, 해결합니다. 그러나 여기에서는 한두개의 입력으로 테스트를 하기 때문에, 생각지도 못한 오류가 많이 발생합니다. 그러나, 프로그래밍 대회에서는 많은 입력을 받아서 바로 정답, 오답이라는 피드백을 받기 때문에 좋은 훈련이 됩니다.


4. 제출한 프로그램의 실행 시간이나 메모리 사용량이 실시간으로 나오기 때문에, 직접 고쳤을 경우, 프로그램의 효율성이 얼마나 달라지는지에 대해 몸소 깨닫게 됩니다. 이것으로 인하여 성능을 예측할 수 있기 때문에, 실무에서의 퍼포먼스를 올리는데 도움이 됩니다.


5. 프로그래밍 대회에서는 아무것도 없는 상태에서 문제를 풀기 때문에, 대형 프로젝트에서 간과했던 프로그램의 일부분에 대해서 집중할 수 있게 해줍니다. 작은 코드를 작성할 때에 프로그램을 짜는데 시간을 투자할 수 있습니다. 즉, 좋은 코드를 짜는데 도움이됩니다.


6. 경쟁하는 환경이기 때문에, 실력을 늘릴 수 있는 동기 부여가 됩니다. 나보다 잘하는 사람들을 보면 많은 것을 느끼게 됩니다. 대회에서 모든 사람이 같은 문제를 풀기 때문에, 실력자의 코드를 직접 보고, 자신과 비교할 수 있습니다.


 

 



책의 처음 부분에서는 이 알고리즘 공부를 효과적으로 하는 방법, 즉, 프로그래밍 대회에 참여하여서 문제 해결 방법을 익히라는 것에 주목을 하고 있습니다.


틈틈히 포스팅을 하겠습니다.


오늘은 이정도로만 적겠습니다.


읽어주셔서 감사합니다.

728x90
반응형