ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] "유형을 몰라도 당황하지 않는다" — 코딩 테스트를 위한 5단계 고정 루틴
    코딩테스트 2026. 1. 20. 17:36

    오늘은 코딩 테스트 문제를 마주했을 때, 머릿속이 하얘지는 현상을 방지하기 위해 제가 확립한 **'5단계 고정 문제 풀이 루틴'**을 공유하고자 합니다.

    유형을 알아야만 풀 수 있는 공부는 한계가 있습니다. 어떤 문제든 일관되게 접근하는 '사고의 프로세스'가 핵심입니다.


    1. 유형을 몰라도 풀리는 '매일의 루틴'

    저는 문제를 마주하면 유형을 먼저 찾으려 애쓰기보다, 다음의 5단계를 거칩니다.

    1단계: 입력/출력 정리 (1분)

    • 목적: 문제의 요구사항을 정확히 파악합니다.
    • 행동: "무엇이 주어지고(Input), 최종적으로 어떤 형태의 값을 반환(Output)해야 하는가?"를 한 줄로 정의합니다.

    2단계: 예제 손으로 직접 돌리기 (2분)

    • 목적: 로직의 구체적인 흐름을 시각화합니다.
    • 행동: 가장 작은 케이스의 예제를 종이에 적고, 내 머리가 컴퓨터가 된 것처럼 한 단계씩 값을 추적해 봅니다.

    3단계: 가장 단순한 풀이(Brute Force) 생각 (2분)

    • 목적: 기준점을 세웁니다.
    • 행동: "가장 무식하게 모든 경우의 수를 다 따지면 어떻게 될까?"를 먼저 고민합니다. 이 단계에서 시간 복잡도를 계산해 봅니다.

    4단계: '신호표' 보고 업그레이드

    • 목적: 효율성을 개선합니다.
    • 행동: 만약 단순 풀이가 너무 느릴 것 같다면(예: $N$이 너무 큼), 문제의 제약 조건(신호)을 보고 적절한 자료구조나 알고리즘으로 업그레이드합니다.
      • 예: "데이터가 정렬되어 있네? -> 이진 탐색!"
      • 예: "중복을 제거해야 하네? -> HashSet!"

    5단계: 오답 및 복기 (2줄 기록)

    • 목적: 같은 실수를 반복하지 않는 '자산'을 만듭니다.
    • 행동: 풀이가 끝나면 길게 적지 않고 딱 두 줄만 기록합니다.
      1. 실수 포인트: (예: "인덱스 범위를 $N-1$로 설정해 런타임 에러 발생")
      2. 다음에 떠올릴 키워드: (예: "연속된 구간의 합을 구할 때는 '누적 합' 키워드 떠올리기")

    2. 왜 '2줄 기록'인가? (Retrospective)

    많은 양의 오답 노트를 작성하는 것은 지속하기 어렵습니다. 저는 **'지속 가능한 학습'**을 위해 핵심만 기록합니다.

    항목 기록 예시
    실수 포인트 스택이 비어있는 경우를 체크하지 않아 EmptyStackException 발생
    키워드 LIFO 구조나 괄호 짝 맞추기 문제가 나오면 'Stack'과 'isEmpty()' 체크 필수

    이렇게 쌓인 두 줄 기록들은 시험 직전 저에게 가장 강력한 **'핵심 요약본'**이 됩니다.


    3. 마치며: 사고의 근육을 기르는 과정

    처음에는 이 루틴을 지키는 것이 더디게 느껴질 수 있습니다. 하지만 이 과정을 반복하면서 느낀 점은, **"어려운 문제는 화려한 알고리즘이 아니라, 기초적인 사고의 단계가 꼬였을 때 생긴다"**는 것이었습니다.

    앞으로 제가 푸는 모든 자바 코딩 테스트 풀이는 이 루틴을 준수하며 기록될 예정입니다. 저와 같은 '코린이' 분들에게 이 루틴이 작은 이정표가 되길 바랍니다!

Designed by Tistory.