1. 코딩테스트를 보는 이유
- 문제 해결 과정을 보기 위해
- 모든 것의 기초이자, 생각하는 실력을 다지기 위해
- 똑같은 결과물이라도 더 빠르고 효율적으로 해결하기 위해
2. 코딩테스트를 준비하는 과정
- 문제를 읽고 스스로 풀어보는 시간을 갖는다.
- 문제를 모두 풀었다면 과정을 되짚으면서 모범답안을 읽어본다. (문제를 어떻게 이해하고 접근했는지 살펴보고, 본인의 풀이와 어떤 점이 다른지와 어떤 점이 부족했는지 생각할 것)
- 설명이 이해되지 않는 부분은 체크하고 다시 풀이해본다.
💡 시간 복잡도란 ? 프로그램이 작동하는데 걸리는 시간을 평가하는 척도이자, 특징 크기의 입력에서 수행되는 연산의 횟수
💡 공간 복잡도란 ? 프로그램이 작동하는데 사용되는 메모리의 양을 평가하는 척도
3. 코드를 작성할 때 흔히 하는 실수
- 존재하지 않는 요소에 접근(Index)
- 배열 슬라이싱의 범위 착각
- 조건식의 경계값 처리( <=, >=)를 하지 않은 경우
- 연산자의 우선순위를 고려하지 않은 경우
- 자료형 변환을 하지 않은 경우
- 반복문이나 재귀 함수에서 종료 조건을 지정해주지 않은 경우
- 0으로 나누는 경우
4. 디버깅하는 방법
한번에 정답 코드를 작성하는 것은 매우 어렵다. 예상치 못한 반례를 만나면서 코드를 수정해야 한다.
통상적으로 코드를 작성할 때 '논리에 맞는 코드' -> '주어진 테스트 케이스를 통과하는 코드' -> '모든 테스트 케이스를 통과하는 코드' 순으로 완성하게 되는데 이 과정에서 발생하는 시간을 줄이기 위해서는 다음과 같은 사항을 고려해야 한다.
- 개발할 기능과 과정 별로 분리하는 습관을 들인다.(모듈화, 함수화) 👉🏻 문제가 발생한 지점을 빠르게 찾을 수 있고, 재사용성 및 유지보수성 Up
- 변수를 사용할 때 상수, 전역 변수, 지역 변수를 확실하게 구분짓고 한 줄에 다 적는 것이 아니라 여러 줄로 나눠서 가독성을 높인다.
- 식별자의 이름을 의미있게 짓는다. (함수는 동사로, 변수는 의미가 명확하도록)
'Algorithm 💡' 카테고리의 다른 글
[코딩테스트 문제 풀이 전략] 시간 복잡도 / 시간 복잡도 줄이는 Tip (0) | 2023.12.28 |
---|---|
[Algorithm] 시간복잡도 & 공간복잡도 (0) | 2023.11.26 |
[백준 2493번] 탑 (0) | 2023.08.29 |
자료구조 및 알고리즘의 중요성과 코딩테스트 준비 (0) | 2023.07.16 |
[HackerRank] Pairs (0) | 2023.05.13 |