백준 골드 달성과 팁

Jeongtae Kim·2022년 8월 3일
8
post-thumbnail

📒 백준의 티어제도

알고리즘 트레이닝 사이트인 백준은 'solved.ac'라는 서비스를 통해 문제의 난이도와 유저의 티어를 알 수 있게 했습니다. 유저의 티어는 'AC Rating'을 계산하여 레이팅 컷에 따라 티어를 결정합니다.

📌 골드 진입 후기

프로그래밍 언어는 웬만큼 하지만, 알고리즘은 하나도 모른 상태로 코딩 대회에 나갔었습니다. 문제 이해도 안 되며 처참하게 예선에서 탈락하고 온 후 알고리즘을 배워야겠다 생각이 들어 시작하게 되었습니다.

뭔 말이여

처음에 코드업으로 시작했다가 백준도 같이 하게 되었는데 백준은 티어가 있어 더 자주 하게 되었습니다. 문제를 푸는 데 여러 우여곡절이 있었지만 점점 티어 올라가는 재미도 있어서 하루에 한번씩은 문제를 풀려고 했던 것 같습니다. 앞으로 더 열심히 공부해서 알고리즘을 마스터하고 대회 입상도 노려보겠습니다.

📌 골드 진입 방식

저의 골드 진입 방식은 이러합니다.

  1. 프로그래밍 언어 공부(파이썬, c++, java ...)
    코드업 기초 100제 (https://codeup.kr/problemsetsol.php?psid=33)
  2. 새싹 문제 (https://solved.ac/problems/sprout)
  3. 단계별로 풀어보기 1 ~ 11 (https://www.acmicpc.net/step)
  4. Class 1++ 완성 (https://solved.ac/class)
  5. 코드플러스 알고리즘 기초 1/2 문제만 (https://code.plus/course/41)
    Class 2 도전 (https://solved.ac/class)

📌 0단계 - 준비

알고리즘 문제들을 풀기 위해서는 프로그래밍 언어를 익혀야 합니다. 저는 시간에서 불리하지만 알고리즘 구현이 쉬운 파이썬을 선택했습니다. 파이썬이나 C언어를 선택하셨다면 코드업의 기초 100제 문제들이 좋으니 배우면서 풀어보시면 좋습니다.

📌 1단계 - 적응

'solved.ac'의 새싹 문제들은 백준 환경과 프로그래밍 언어 사용에 적응하도록 만든 쉬운 문제들입니다. 코드업의 기초 100제와 비슷한 난이도니 문제를 풀면서 새로운 환경에 적응하시면 되겠습니다.

📌 2단계 - 시작

자 이제부터 본격적으로 알고리즘 풀이가 시작됩니다! 백준에는 어떤 문제를 풀 지 모르겠는 분들을 위해 '단계별로 풀어보기'라는 곳이 있습니다. 들어가면 제일 쉬운 '입출력과 사칙연산'부터 제일 어려운 '매우 어려운 자료구조와 알고리즘'까지 있습니다. 저는 11단계인 '정렬'부분까지를 풀었습니다!

이제부터 문제를 풀 때 모르는 문제들이 나올 수 있습니다. 이럴 때는 사람 특성(?)에 따라 다르게 해야하는데요. 일주일을 넘기며 계속 고민하며 풀다가 너무 모르겠으면 패스하는 것이 맞는 사람들도 있고, 1시간을 집중했는데도 안 풀리니 그냥 답을 보는 것이 맞는 사람들도 있습니다. 저는 하루만 고민해보고 안 되면 검색해보거나 힌트를 구합니다. 자기가 이 문제를 완벽히 머리에 담을 수 있도록 방식을 잘 선택해야 합니다.

📌 3단계 - 중간 점검

'solved.ac'에는 자주 나오는 주제들을 모아놓은 '클래스'가 있습니다. 클래스는 1단계부터 10단계까지 있습니다. 클래스마다 난이도 격차는 좀 있는 편이니 지금은 클래스 1++까지 풀어볼 것입니다. 자신이 푼 클래스에 따라 티어에 영향을 주니 어느정도 공부가 되었을 때마다 클래스를 확인하고 풀 수 있는 문제들을 풀어봅시다!

클래스 1은 브론즈, 새싹 문제들이 나오고 많은 문제들이 이미 풀려있을 것입니다. 몇 문제만 더 풀어서 금방 클래스 1++을 달성할 수 있습니다.

📌 4단계 - 상승

'코드플러스'는 백준을 만든 스타트링크의 강의사이트입니다. 그럼 강의를 사야되냐고요?? 아뇨, 저희는 나와있는 문제들을 풀 것입니다. 링크로 들어가서 내려가면 '포함되어 있는 문제'가 나올 것입니다.

'알고리즘 기초 1/2'에서는 자료구조1, 수학1, 다이나믹 프로그래밍1을 다룹니다. 확실히 '단계별로 풀어보기' 때보다 어려워지고 고민도 많이하게 될 것입니다. 이 문제들을 풀다보면 '다이나믹 프로그래밍1'의 중간에서 골드를 달성하게 됩니다. 모르는 개념이 있다면 검색해야 합니다. 챕터마다 제목이나 볼드 처리된 설명을 검색하여 해당 개념들을 공부하고 문제를 푸셔야 합니다. 제가 생각하는 필수적으로 공부해야 할 것들입니다.

  • 스택( + 큐, 덱)
  • 유클리드 호제법
  • 최대공약수와 최소공배수의 관계
  • 소수 알고리즘
  • 진법
  • 다이나믹 프로그래밍

    그리고 클래스 2 문제들은 실버와 약간의 브론즈 문제들이 섞여 있습니다.

📌 앞으로의 계획

골드를 달성하고 나서도 아직 많이 멀었다는 느낌이 듭니다. 앞으로도 머리를 쥐어짜면서 알고리즘 문제들을 열심히 풀겠습니다. 감사합니다!

+ 추가 : 얼마 전 plzrun 님의 '알고리즘 문제풀이(PS) 시작하기'라는 글을 보고 유익해서 공유합니다.

profile
유용할지도 모른다.

0개의 댓글