코딩 테스트 준비 및 CS 공부에 필요성을 느껴 현재 배우고 있는 언어인 JavaScript를 이용하여 알고리즘 공부를 시작하고 기록해보려고 한다 !
목적
- 정해진 시간에 몇 개의 알고리즘 문제를 제시하기 때문에 적절한 알고리즘을 활용한 문제를 해결할 수 있는 능력을 길러야한다.
환경
- 온라인 상에서 제공되는 개발 환경을 사용하여 시험보기 때문에 비슷한 환경의 사이트를 사용하여 공부할 것이다.
- 링크 공유에 편리하기 때문에 https://replit.com 을 사용할 것이다.
소스코드 관리하기
- 알고리즘 공부를 하며 코드 템플릿을 만드는 것이 유리하다.
- 대표적인 알고리즘의 기본 형태를 미리 구현해 놓고 GitHub를 이용하여 라이브러리화 할 것이다.
공부 알고리즘 유형
- 구현
- 정렬
- 탐색 (DFS, BFS)
- 탐욕
- 이외에도 여러 유형을 풀어볼 것이다.
시간 복잡도
- 시간 복잡도는 알고리즘의 성능을 나타내는 척도
- 특정 크기의 입력에 대하여 알고리즘의 수행시간 분석
- 동일한 기능을 수행하는 알고리즘이 있다면 복잡도가 낮을수록 우수하다.
빅오 표기법 (Big-O Notation)
- 가장 빠르게 증가하는 항만을 고려하는 표기법이다.
- 함수의 상한을 나타낸다.

알고리즘 설계 tip
- JS 기준 1억 번의 연산을 처리하기 위해 약 1~5초가량의 시간이 소요된다.
- 코딩 테스트 문제에서 시간 제한은 통상 1~5초 가량이다.
- 문제에 명시되지 않은 경우 대략 5초정도라고 생각하고 문제를 푸는 것이 합리적이다.
요구사항에 따라 적절한 알고리즘 설계
- 주어지는 입력의 범위(N)과 시간제한을 통해 적절한 알고리즘을 사용할 수 있어야한다.
- 예시) 제한 시간이 1초인 경우
