머릿속에 있는 알고리즘을 소스 코드로 바꾸는 과정
기본적으로는 어떤 문제를 풀든 간에 소스 코드를 작성하게 되고, 작성된 코드는 시간/메모리 제한 사항울 충족해야 한다. 그러므로 이 유형은 모든 유형의 문제를 포함하는 개념이기도 한다. 또한 문제를 잘 풀이하기 위해서는 프로그래밍 언어에 능숙하고 코드 작성 속도가 좋은 것이 유리하므로 피지컬을 요구한다고 볼 수 있다.
이 책에서는 구현 유형을 별도의 챕터로 분류하여 알고리즘을 설계하고 제시된 조건에 맞게 코드로 작성하기 위해 알아야 내용들을 다룬다.
구현 유형에는 완전 탐색, 시뮬레이션 유형이 존재한다.
시간 제한을 충족하기 위해서는 작성할 알고리즘의 시간 복잡도를 파악하고, 이 시간 복잡도가 1초 동안 얼마나 많은 연산을 할 수 있는지 알고 있어야 한다. 시간 복잡도마다 어느정도의 연산을 할 수 있는지는 아래 링크를 참고하자.
코드를 완성하고 보면 알고리즘을 처리하기 위한 순서마다 여러개의 시간 복잡도가 발생할 수 있다. 예를 들어
크게 3가지로 나뉠 경우에 가장 큰 차수인 O(NlogN)
을 작성한 알고리즘의 시간 복잡도로 정하면 된다.
메모리 제한을 충족하기 위해서는 각 자료형들의 크기와 범위를 알고 있어야 한다. Java의 자료형에 대한 정보는 갓구글님께서 하나부터 열까지 친절하게 알려주고 계신다. 🤣
메모리 제한의 경우 대체적으로 여유있게 출제되는 편이므로 일반적인 상황에서는 초과될 일이 거의 없다.