코딩 테스트 OT: 실전은 연습이 아니라 분석으로 시작한다

ujinsim·2025년 7월 4일

문제 분석 연습하기

  1. 문제를 세분화하여 분석할 것

    • 문제를 작은 단위로 나누어 전체 구조를 파악한다.
  2. 제약 조건을 명확히 파악하고, 이에 따른 테스트 케이스를 작성할 것

    • 제한 시간, 입력 범위 등을 고려하여 다양한 입력 상황을 시뮬레이션한다.
  3. 입력값의 특성을 분석할 것

    • 예: 입력 데이터가 100만 개일 경우, O(n²) 알고리즘은 비효율적일 수 있다.
  4. 핵심 키워드를 통해 해결 방향을 도출할 것

    • 예: "최적의 해" → 그리디, BFS, 다익스트라 등 적절한 알고리즘 유추.
  5. 데이터의 흐름을 고려한 자료구조 선택

    • 예: 삽입/삭제가 잦은 경우 → 힙, 큐, 덱 등의 자료구조 활용 고려.

의사코드(Pseudo Code) 작성 연습

  1. 세부 구현보다 동작 중심으로 작성할 것

    • 함수나 조건문 중심으로 동작 흐름을 설계한다.
  2. 문제 해결 순서대로 단계적으로 작성할 것

    • 예시:
      1. 영어 성적 입력
      2. 성적이 60점 이상인지 확인
      3. 조건 충족 시 → "통과", 미달 시 → "실패"
  3. 충분한 테스트를 통해 설계의 타당성을 검토할 것

    • 의사코드만으로 대부분의 케이스가 해결된다면 구현을 시작해도 무방하다.

시간복잡도란?

  • 입력 크기에 따른 연산 횟수의 상한을 표현하는 개념.
  • 시간 복잡도는 점근적 표기법으로 나타냄: O(1), O(n), O(n²), O(log n)
  • 예: 1차원 배열 검색 시, 최소/최대값 위치에 따라 최악의 경우 전체 탐색 필요

실전 기준

  • 컴퓨터는 초당 약 1억 회 연산 가능
  • 시간 초과를 피하려면 보통 1천만 ~ 3천만 회 이하 연산으로 제한

시간 복잡도 분석 단계

  1. 문제 정의
  2. 연산 횟수 측정
  3. 시간 복잡도 분석

JavaScript 내장 메서드 및 참조 타입 정리

참조 타입과 동작 방식

  1. 원시 타입(Primitive): 값 자체를 저장 (number, string, boolean 등)
  2. 참조 타입(Reference): 객체의 주소를 저장
  3. Object 타입: key-value 구조
  4. 배열(Array): 인덱스 기반 컬렉션
  5. 함수(Function): 익명 함수, 화살표 함수 등

코딩 테스트 실전 구현 노하우

  1. 구조 분해 할당

    [a, b] = [b, a];
  2. 비구조화 할당

    function printName({ name }) {
      console.log(name);
    }
  3. 스프레드 연산자

    const merged = { ...obj1, ...obj2 };
  4. 중복 제거 (Set)

    [...new Set(arr)];
  5. 조건문 간결화

    isValid && doSomething();
    isError || continueProcess();
profile
프론트엔드 공부 중.. 💻👩‍🎤

0개의 댓글