본문 바로가기
Back-end & 알고리즘

백준 문제 유형 파악이 안 돼서 시간 버리고 있다면? 알고리즘 분류 숨은 의도 찾는 법

by CodeByJin 2026. 4. 22.
반응형

백준(BOJ) 문제를 풀다 보면 분명 아는 내용 같은데 손도 못 대고 멍하니 화면만 바라보게 되는 경우가 참 많죠. 특히 '알고리즘 분류' 버튼을 누르기 전까지는 도대체 이게 그래프 문제인지, 다이내믹 프로그래밍(DP) 문제인지 감조차 안 올 때가 있습니다.

사실 이 단계가 가장 번거롭고 괴로운 지점이에요. 문제를 읽고 "아, 이건 BFS로 풀면 되겠네"라는 판단이 서기까지의 과정이 실력의 80%를 결정하거든요. 오늘은 17년 차 개발자로서, 그리고 수많은 시행착오를 겪으며 정리한 '문제 속 데이터와 제약 조건에서 힌트를 얻는 실전 전략'을 가감 없이 공유해 드릴게요.

입력 데이터의 크기만 봐도 절반은 먹고 들어갑니다

많은 분이 문제를 읽자마자 로직부터 고민하시는데, 사실 가장 먼저 봐야 할 곳은 하단의 '제약 조건'입니다. 컴퓨터가 1초에 처리할 수 있는 연산 횟수는 대략 1억 번 내외라는 점을 기억하세요. 2026년 현재 기준의 고성능 채점 서버에서도 이 기준은 크게 변하지 않는 골든 룰입니다.

데이터 범위(N)가 10~20 내외라면 이건 십중팔구 브루트포스(전수 조사)나 백트래킹 문제입니다. 모든 경우의 수를 다 따져보라는 출제자의 친절한 암시죠. 반면 N이 100,000을 넘어간다면? 이때부터는 $O(N \log N)$ 이하의 알고리즘을 찾아야 합니다.

정렬, 이분 탐색, 혹은 우선순위 큐를 이용한 그리디 알고리즘이 후보군에 오릅니다. 만약 N이 1,000,000 이상인데 정렬조차 시간 초과가 난다면 $O(N)$인 스택이나 투 포인터, 슬라이딩 윈도우를 의심해봐야 합니다.

이건 직접 문제를 풀면서 체감해보면, 로직을 짜기 전에 메모장에 N의 범위를 적어두는 습관 하나만으로도 엉뚱한 길로 빠져서 2~3시간씩 허비하는 일을 확연히 줄일 수 있었습니다.

백준 알고리즘 유형 분석 - 생성형 AI 이미지

알고리즘 분류를 미리 보면 실력이 안 늘까요?

많은 초보자분이 궁금해하시는 부분인데, 제 대답은 "때에 따라 다르다"입니다. 아예 갈피를 못 잡고 1시간 이상 고민하는 것보다는 분류를 살짝 보고 해당 개념을 공부하며 푸는 게 훨씬 효율적이에요. 다만, 실전 감각을 키우고 싶다면 '분류' 대신 '데이터 범위'와 '키워드'로 스스로 추론하는 연습을 반드시 병행해야 합니다. 마치 수학 문제를 풀 때 해설지를 보기 전, 공식의 유도 과정이라도 한 번 더 떠올려보는 것과 같습니다.

상황별로 골라 쓰는 문제 유형 판독 가이드

문제에서 요구하는 '결과값'의 형태에 따라서도 유형은 선명하게 갈립니다. 제가 주로 사용하는 판독 기준을 표로 정리해 보았습니다.

요구사항 유형의심되는 알고리즘선택 기준 및 이유
최단 거리 / 최소 횟수BFS, 다익스트라가중치가 없으면 BFS, 있으면 다익스트라가 국룰입니다.
최대값 / 최소값 (연속적)이분 탐색 (Parametric Search)정답의 범위가 매우 크고 'YES/NO'로 판단 가능할 때 씁니다.
모든 경우의 수 / 조합백트래킹, DFSN이 작을 때 사용하며, 중복 제거가 핵심입니다.
이전 결과를 재사용DP (다이내믹 프로그래밍)작은 문제가 반복되고 점화식이 세워진다면 100%입니다.

 
표를 보면 알 수 있듯이, 문제의 요구사항과 데이터 가중치 유무에 따라 도구가 완전히 달라집니다. BFS로 풀 수 있는 문제를 굳이 복잡한 DP로 풀려다가 꼬이는 경우를 정말 많이 봤거든요.

구체적인 키워드에 숨겨진 코딩 테스트의 암호

문장 속에 특정 단어가 등장하면 거의 '확정적'인 유형들이 있습니다. 예를 들어 "친구의 친구", "연결된 관계" 같은 표현이 나오면 그래프 이론(Union-Find나 BFS/DFS)으로 접근하세요. "사전순으로 가장 앞선"이라는 말이 보이면 그리디나 우선순위 큐를 먼저 떠올리는 게 좋습니다.

특히 주의할 점은 '가장 빠른 길'을 찾는 문제에서 "간선의 가중치가 음수"라는 조건이 붙을 때입니다. 일반적인 다익스트라는 여기서 무너집니다. 이때는 벨만-포드 알고리즘을 써야 하죠.

이건 직접 당해봐야 무서움을 아는데, 가중치가 음수일 때 다익스트라를 돌리면 무한 루프에 빠지거나 오답을 뱉습니다. 이런 예외 상황을 캐치하는 게 실력의 차이를 만듭니다.

나에게 맞는 문제 접근 방식 선택하기

모든 사람에게 정답인 공부법은 없지만, 현재 본인의 수준에 맞춰 전략을 짜는 게 중요합니다. 2026년 기준 공채 트렌드도 단순 암기보다는 응용력을 중시하니까요.

  • 입문자 (브론즈~실버): 유형을 먼저 확인하고 해당 알고리즘의 템플릿을 외우는 것부터 시작하세요. 일단 도구 상자에 망치와 드라이버가 있어야 뭘 고칠 것 아닙니까?
  • 중급자 (골드 상위): 유형을 가리고 문제를 보세요. 데이터 범위를 보고 직접 $O(log N)$인지 $O(N^2)$인지 계산하는 연습을 하셔야 합니다.
  • 실전 대비: 백준의 '랜덤 출제' 기능을 활용하세요. 아무 정보 없이 문제를 맞닥뜨렸을 때의 당혹감을 이겨내는 훈련이 필요합니다.

솔직히 말씀드리면, 저도 가끔 골드 상위 문제에서 유형 파악에 실패해 삽질할 때가 있습니다. 하지만 그 삽질의 시간이 결국 나중에 비슷한 문제를 만났을 때 "아, 저번에 이래서 안 됐지"라는 직관을 만들어주더라고요.

단순히 문제를 많이 푸는 것보다 하나를 풀더라도 왜 이 알고리즘을 선택했는지 스스로 설득할 수 있어야 합니다. 오늘 알려드린 데이터 범위 계산법과 키워드 매칭만 잘 활용하셔도, 문제 창을 띄워놓고 멍하게 있는 시간은 절반 이하로 줄어들 겁니다.

지금 바로 백준에 접속해서 아무 문제나 클릭해 보세요. 그리고 알고리즘 분류를 보기 전에 제약 조건부터 확인해 보는 건 어떨까요? 그 작은 습관이 여러분의 티어를 바꾸는 시작점이 될 거예요.

Spring Boot 초기 세팅, '현업의 맛'을 더하는 5가지 체크리스트

사실 Spring Boot 프로젝트를 새로 생성하고 나면, IDE에 뜬 수많은 폴더와 파일 앞에서 어디부터 손을 대야 할지 막막할 때가 많죠? 처음 단추를 잘 못 끼우면 나중에 설정 하나 바꾸려다 프로젝트

byteandbit.tistory.com

반응형