본문 바로가기
개인 공부/알고리즘

[ 코테 준비 PGS ] 코딩 테스트 합격자 되기(자바 편) - Ch 1

by 킴도비 2024. 7. 18.

Ch 00. 코딩 테스트 사전 준비

나만의 테스트 케이스를 추가하는 건 좋은 알고리즘을 생각할 때 도움이 된다.

  • 문제 분석 시 고려해야 할 중요 케이스나 실제 구현 실수하기 쉬운 사항을 항상 가정해야 한다.
  • 충분한 시간을 들여 문제를 분석한 다음 코드로 구현하기 전에 여러 예외 상황을 충분히 확인할 수 있도록 나만의 테스트 케이스를 추가 해봐야 한다.
  • 문제를 분석하는 단계에서 충분히 예외 테스트 케이스를 추가해야 한다.

아는 것과 모르는 것을 명확하게

  • 첫 번째, 기록하라
  • 두 번째, 시험 보듯 공부하라
  • 세 번째, 짧은 시간 공부해서는 절대 코딩 테스트를 통과할 수 없다.
  • 네 번째, 나만의 언어로 요약하라

 

Ch 01. 언어 선택하기

  • 언어를 활용할 때는 다음 내용만 기억하기
    • 변수 선언하기
    • 함수 정의하기
    • 컬렉션 자료형 다루기
    • 조건문, 반복문 사용하기
  • 코딩 테스트는 코딩 능력이 아니라 문제 풀이 능력을 확인하는 것이 핵심이다.
    • 대부분 2시간에서 4시간 정도 문제 풀 시간을 주므로 시간의 50~60%는 문제 분석에 시간을 쓰는 것이 좋다.
    • 첫 번째, 문제를 쪼개서 분석하라.
      • 동작 단위로 쪼개서 분석하는 것이 유리하다.
    • 두 번째, 제약 사항을 파악하고 테스트 케이스를 추가하라.
      • 어떤 알고리즘을 사용할 지 고민할 때 유용하고, 추후 코드를 구현하는 단계에서 예외를 거를 때 도움이 된다.
    • 세 번째, 입력값을 분석하라
      • 알고리즘의 시간 복잡도는 입력값이 결정하는 경우가 많다.
      • 입력값의 크기를 확인하면 문제를 제한시간 내에 풀 수 있는 알고리즘과 그렇지 않은 알고리즘을 미리 걸러낼 수 있다.
    • 네 번째, 그리디하게 접근할 때는 근거를 명확히 해라
      • 그리디란? '현재 상황에서 가장 유리해 보이는 선택을 하는 것'
      • 공부할 때 가장 많이 하는 실수가 '그리디하게 풀리지 않는 문제를 그리디하게 접근하는 것'이다.
      • 완전 탐색이란? 모든 경우의 수를 다 따지는 것이다.
    • 다섯 번째, 데이터 흐름이나 구성을 파악하라
      • 만약 데이터의 삽입과 삭제가 빈번하게 일어나는 상황에서 최댓값 혹은 최솟값을 반복하여 구해야 한다면 힙 자료구조를 고려하는게 좋을 수 있다.
      • 데이터가 50개 미만이면 하드코딩을 고려, 데이터 값 끼리의 차이가 크다면 배열의 인덱스로 활용하는 건 피해야 한다.
  • 의사 코드로 설계하는 연습하기
    • 의사 코드는 프로그램의 논리를 설명하고 알고리즘을 표현하기 위해 작성한 일종의 지침이라 보면 된다.
      • 원칙 1 : 프로그래밍 언어로 작성하면 안 됨
      • 원칙 2 : 일반인도 이해할 수 있는 자연어로 작성해야 함
      • 원칙 3 : 일정한 형식이 없음(자유롭게 작성)
    • 첫 번째, 세부 구현이 아닌 동작 중심으로 작성하라
    • 두 번째, 문제 해결 순서로 작성하라
    • 세 번째, 충분히 테스트하라