안녕하세요 Gliver 입니다.
이번 글에서는 알고리즘 공부법에 대해 알아보겠습니다.
목차
- 문제를 해결하는 데 필요한 능력
- 코딩테스트와 대회의 차이점
- 추천하는 알고리즘 공부법
- Gliver의 알고리즘
1. 문제를 해결하는 데 필요한 능력
코딩테스트나 대회의 궁극적인 목표는 문제를 해결하는 것입니다.
다음은 문제를 해결하는 데에 필요한 3가지 요소입니다.
ㆍ 문제해결능력
ㆍ 알고리즘
ㆍ 구현력
문제를 보고 이 문제를 "어떻게 해결할 것인가"에 대해 생각하고(문제해결능력),
이를 배웠던 알고리즘과 연결시켜(알고리즘),
코드로 구현하는 과정(구현력)을 거치면 문제를 해결할 수 있게 됩니다.
2. 코딩테스트와 대회의 차이점
위에서 말했듯이, 문제를 풀기 위해서는 문제해결능력, 알고리즘, 구현력 등이 필요합니다.
단지, 코딩테스트를 통과하기에 필요한 능력의 레벨과 대회에서 성적을 거두기 위한 능력의 레벨에 차이가 있을 뿐,
코딩테스트나 대회나 필요로 하는 능력은 같습니다.
코딩테스트는 줄여서 코테라고 많이 부름.
자세한 설명은 더보기를 참고해주세요.
[코딩 테스트를 통과하기에 필요한 능력의 레벨]
ㆍ 문제해결능력 : 20
ㆍ 알고리즘 : 40
ㆍ 구현력 : 30
[대회에서 성적을 거두기 위한 능력의 레벨]
ㆍ 문제해결능력 : 80
ㆍ 알고리즘 : 80
ㆍ 구현력 : 80
(위는 이해를 돕기 위한 예시이고 절대적인 수치는 아닙니다.)
위처럼, 대회의 문제들은 문제에 대한 핵심 아이디어를 생각해내는 과정이 굉장히 어렵고(문제해결능력), 알고리즘의 종류도 고급 알고리즘까지 나오며(알고리즘), 생각해낸 아이디어와 알고리즘을 구현하는 데(구현력) 코테보다 어렵다는 의미입니다.
3. 추천하는 알고리즘 공부법
지금 보면, 알고리즘 공부법이라기 보단, 코테(또는 대회)를 위한 공부법이 올바른 표현이지만,
일반적으로 알고리즘 공부법이라고 많이 부르기 때문에 편의상 저도 알고리즘 공부법이라고 하겠습니다.
제가 추천하는 알고리즘 공부법은 일단 코테를 통과할 수준까지 공부하는 것입니다.
어차피 코테를 통과할 실력 이전이라면, 코테를 준비하는 과정이 대회에 도움이 되기 때문
그렇다면, 문제해결능력과 알고리즘과 구현력에 대한 학습이 필요할 것입니다.
먼저, 알고리즘은 인강, 블로그, 책 등을 통해서 쉽게 접하고 배울 수 있는 부분입니다.
다음으로 구현력은 배웠던 알고리즘 관련 문제를 풀어보는 과정을 통해서 키울 수 있습니다.
마지막으로 문제해결능력은 얻기 가장 어려운 부분입니다.
문제해결능력을 키우는 가장 간단한 방법은 어떤 문제를 보고 아이디어를 떠올리는 과정을 반복하는 것입니다.
이것을 하는 법은 코드포스를 하거나 백준에서 적절한 난이도 문제를 알고리즘과 난이도를 모른 상태로 풀어보는
방법 등이 있습니다.
4. Gliver의 알고리즘
제 블로그의 알고리즘 카테고리의 글은 "알고리즘"과 더불어 "문제 해결 능력"을 키우는 데에 초점을 두어 작성할 것입니다.
처음 접하는 알고리즘의 경우 퀄리티 있고 일관성이 높은 코드로 그 틀을 잡고 가는 것이 좋습니다.
따라서, 알고리즘 구현 코드를 첨부할 예정이, C++과 Python 모두 작성할 예정입니다.
제 글의 알고리즘 카테고리의 전체적인 목차와 업로드 내용은 여기에 정리해두겠습니다!
궁금한 점이나 코멘트는 댓글로 남겨주세요!
- 나의 알고리즘 스토리 : https://gliver.tistory.com/3
- 알고리즘 목차 : https://gliver.tistory.com/7