대부분의 DSA 문제는 반복이다
Source: Dev.to
The quiet realization

대부분의 DSA 문제는 실제로 새로운 것이 아니다.
그냥 변형일 뿐—제약이 다르고, 약간의 트윅이 있고, 문구가 바뀔 뿐.
하지만 그 아래에서는 같은 몇 가지 아이디어가 계속해서 등장한다:
- 두 포인터
- 슬라이딩 윈도우
- Prefix sum(누적합)
- 이진 탐색
- 약간의 해싱
그걸 눈치채면, 다시는 보지 않을 수 없다.
Why this feels uncomfortable at first
우리 중 많은 사람들은 모든 문제를 독특한 것으로 다루도록 교육받는다:
- 꼼꼼히 읽는다.
- 처음부터 시작한다.
- 몇 가지 접근법을 시도한다.
- 뭔가 떠오르길 바란다.
그래서 문제가 반복되기 시작하면, 아이디어를 재사용한다는 것이 “속임수”처럼 느껴질 수 있다. 마치 진짜로 배우고 있지 않은 것처럼. 이런 사고방식 때문에 DSA가 필요 이상으로 어렵게 느껴진다.
This is how engineering actually works
실제 시스템에서도 우리는 해법을 새로 만들지는 않는다. 우리는:
- 구조를 인식한다.
- 알려진 접근법을 재사용한다.
- 패턴을 제약에 맞게 적용한다.
DSA도 마찬가지다. 면접 문제는 당신이 얼마나 독창적인가를 테스트하는 것이 아니라; 다음을 테스트한다:
- 구조를 인식할 수 있는가
- 올바른 추상화를 선택할 수 있는가
- 트레이드‑오프를 논리적으로 판단할 수 있는가
- 왜 그 접근법이 동작하는지 설명할 수 있는가
반복은 시스템의 약점이 아니라 신호이다.
How difficulty really increases
난이도는 보통 완전히 새로운 아이디어에서 오는 것이 아니라, 익숙한 아이디어를 조합하는 데서 온다.
- Easy problems → 하나의 패턴
- Medium problems → 하나 또는 두 개의 패턴
- Hard problems → 보통 두 개, 가끔은 세 개
그게 전부다. 쉬운 문제에서 중간 문제로 넘어가는 것은 지능 때문이 아니라, 여러 제약과 불변식을 동시에 머릿속에 유지해야 하기 때문이다.
Why grinding eventually stops helping
패턴을 추출하지 않고 문제를 계속 풀기만 하면:
- 특정 질문에만 과적합한다
- 해법을 금방 잊는다
- 다음 변형이 “새로운” 것처럼 느껴진다
대신 멈추고 스스로에게 물어보라:
- 이 문제가 실제로 테스트하는 패턴은 무엇인가?
- 어떤 불변식이 유지되고 있는가?
- 어떤 제약이 이 접근법을 강요하는가?
그럼 반복은 좌절이 아니라 장점이 된다. 문제를 더 일찍 인식하게 되고—때로는 첫 번째 분 안에도. 그때 DSA가 관리 가능해진다.
What helped me the most
내게 가장 큰 변화를 가져온 것은 스스로에게 묻는 질문을 바꾼 것이다.
- 이전: “이 문제를 풀 수 있을까?”
- 이후: “이 문제가 어떤 패턴을 테스트하려는 걸까?”
그 질문에 답할 수 있게 되면, 나머지는 자연스럽게 따라온다:
- 접근법
- 엣지 케이스
- 복잡도
- 설명
코드 자체는 종종 가장 흥미롭지 않은 부분이 된다.
Why I’m leaning into this publicly
DSA가 대부분 구조화된 반복이라는 생각은 지금 내가 구축하고 있는 핵심이다—단축키나 트릭이 아니라 학습 과정을 덜 무작위하고 덜 위협적으로 만들기 위한 방법이다. 나는 패턴, 불변식, 그리고 그것들을 인식하는 방법을 한 곳에 정리하고 있다(indexedcode.com). 이 뉴스레터는 그 과정을 소리 내어 생각하는 공간이다.
What’s next
다음 글에서는 코드를 생각하기 전에, 보통 먼저 올바른 패턴을 어떻게 식별하는지에 대해 쓸 것이다. 마법은 아니다; 주로 제약, 키워드, 그리고 무시해야 할 것을 아는 것에 관한 것이다.
만약 최근 DSA가 반복적으로 느껴진다면, 그것은 좋은 신호일 가능성이 높다—구조를 보기 시작한 것이다.