Algorithm

[코딩테스트 문제 풀이 전략] 코딩테스트 관련 Tip

킹우현 2023. 12. 28. 13:56

1. 코딩테스트를 보는 이유

  • 문제 해결 과정을 보기 위해
  • 모든 것의 기초이자, 생각하는 실력을 다지기 위해
  • 똑같은 결과물이라도 더 빠르고 효율적으로 해결하기 위해

2. 코딩테스트를 준비하는 과정

  1. 문제를 읽고 스스로 풀어보는 시간을 갖는다.
  2. 문제를 모두 풀었다면 과정을 되짚으면서 모범답안을 읽어본다. (문제를 어떻게 이해하고 접근했는지 살펴보고, 본인의 풀이와 어떤 점이 다른지와 어떤 점이 부족했는지 생각할 것)
  3. 설명이 이해되지 않는 부분은 체크하고 다시 풀이해본다.
💡 시간 복잡도란 ? 프로그램이 작동하는데 걸리는 시간을 평가하는 척도이자, 특징 크기의 입력에서 수행되는 연산의 횟수
💡 공간 복잡도란 ? 프로그램이 작동하는데 사용되는 메모리의 양을 평가하는 척도

 

3. 코드를 작성할 때 흔히 하는 실수

  • 존재하지 않는 요소에 접근(Index)
  • 배열 슬라이싱의 범위 착각
  • 조건식의 경계값 처리( <=, >=)를 하지 않은 경우
  • 연산자의 우선순위를 고려하지 않은 경우
  • 자료형 변환을 하지 않은 경우
  • 반복문이나 재귀 함수에서 종료 조건을 지정해주지 않은 경우
  • 0으로 나누는 경우

4. 디버깅하는 방법

한번에 정답 코드를 작성하는 것은 매우 어렵다. 예상치 못한 반례를 만나면서 코드를 수정해야 한다.

 

통상적으로 코드를 작성할 때 '논리에 맞는 코드' -> '주어진 테스트 케이스를 통과하는 코드' -> '모든 테스트 케이스를 통과하는 코드' 순으로 완성하게 되는데 이 과정에서 발생하는 시간을 줄이기 위해서는 다음과 같은 사항을 고려해야 한다.

  • 개발할 기능과 과정 별로 분리하는 습관을 들인다.(모듈화, 함수화) 👉🏻 문제가 발생한 지점을 빠르게 찾을 수 있고, 재사용성 및 유지보수성 Up
  • 변수를 사용할 때 상수, 전역 변수, 지역 변수를 확실하게 구분짓고 한 줄에 다 적는 것이 아니라 여러 줄로 나눠서 가독성을 높인다.
  • 식별자의 이름을 의미있게 짓는다. (함수는 동사로, 변수는 의미가 명확하도록)