사고 · beginner

예제 추적: 손으로 한 스텝

예제 입력을 변수 표로 따라가며 버그와 오프바이원을 줄입니다.

배우기 · 문제 푸는 사고 · 12분 · 2/10 · 사고 · 디버그 · 추적

이 트랙 목차 (10)
  1. 1. 문제 읽기: 입출력·제약·목표
  2. 2. 예제 추적: 손으로 한 스텝
  3. 3. 경계·엣지 케이스 목록화
  4. 4. 오답·실패 케이스 분석
  5. 5. 패턴 고르기: 제약으로 후보 줄이기
  6. 6. 의사코드: 구현 전에 뼈대 쓰기
  7. 7. 시간 상자: 막힐 때 멈추는 규칙
  8. 8. 접근 비교: 브루트 · 해시 · 투포인터
  9. 9. 회귀 확인: 고친 뒤 다시 채점
  10. 10. 작은 테스트 직접 쓰기

왜 손으로 치나

머리가 그린 알고리즘과 코드의 인덱스가 어긋나는 경우가 많습니다.
예제 하나를 표로 추적하면 논리가 맞는지 5분 안에 드러납니다.

방법

  1. 예제 입력을 적는다
  2. 핵심 변수 (i, lo, hi, freq, dp[i]) 열을 만든다
  3. 루프마다 한 줄씩 갱신한다
  4. 최종 출력이 기대와 같은지 본다
steplohisum비고
0039시작
1027hi--
2125목표

연습장과 함께

추적이 맞는데 코드가 틀리면, 같은 변수를 console.log / print로 찍어 표와 비교하세요.
표는 맞고 로그만 다르면 구현 버그입니다.
표부터 틀리면 알고리즘 버그입니다. 고치는 곳이 다릅니다.

// 임시 디버그 (제출 전 제거)
console.log({ lo, hi, sum });

작은 예제를 직접 만들기

공식 예제만 보지 말고:

를 만들어 같은 표로 돌리세요. 다음 레슨 경계와 연결됩니다.

재귀·DP일 때

호출 트리나 dp 표를 칸마다 채웁니다.
“점화식은 맞는데 초기값이 틀림”이 추적에서 바로 보입니다.

작은 표 예시 (투포인터)

입력 [1,2,4,7], 목표 합 6

stepLRsum행동
0038너무 큼 → R--
1025작음 → L++
2126발견

표가 막히면 코드의 인덱스·조건이 틀렸을 가능성이 큽니다.
출력만 맞고 중간이 이상하면 운으로 통과한 케이스일 수 있으니 다른 예제도 한 번 더 추적하세요.

언제 그만두나

한 예제에서 논리가 맞고, 경계 케이스(빈/1개/최대)도 머릿속으로 통과하면 구현으로 넘어갑니다.

관련 짧은 원리

관련 문제