시리즈 안내
이 글은 「アルゴリズム実技検定 公式テキスト [上級]~[エキスパート]編」을 기반으로 한 AtCoder 알고리즘 시리즈의 Part 0 입니다.
서적의 내용을 단순 번역하는 것이 아닌, 직접 학습하며 이해한 내용을 정리하고, 추가적인 해설과 예제를 곁들여 작성합니다.
개요
이번 파트에서는 시리즈 전체의 기반이 되는 내용을 다룹니다.
- PAST(アルゴリズム実技検定) 란 무엇인가?
- 시험 형식, 랭크 체계, 채점 방식
- 본 시리즈의 학습 로드맵
알고리즘 문제를 풀어본 경험이 있는 분이라면 바로 Part 1부터 시작해도 괜찮지만, PAST라는 시험 자체의 특성과 이 시리즈가 어떤 방향으로 전개되는지 파악하기 위해 한 번 읽어보시는 것을 권장합니다.
PAST란 무엇인가?
PAST (Practical Algorithm Skill Test) 는 프로그래밍 능력을 측정하는 일본 최초의 실기 검정시험입니다.
기존의 IT 관련 자격시험과는 근본적으로 다릅니다:
| 구분 | 기존 기술 검정시험 |
PAST |
| 평가 대상 | 도구 사용법, 네트워크 지식 등 | 논리적 사고력, 알고리즘 설계, 코딩 스킬 |
| 방식 | 선택지 기반 | 실제 프로그램 작성 & 실행 |
| 채점 | 객관식/주관식 | 자동 채점 (테스트 케이스 기반) |
| 환경 | 오프라인 | 온라인 (인터넷 검색 허용) |
핵심은, 시대에 따라 변하는 특정 도구나 프레임워크의 사용법이 아니라 프로그래밍의 근간에 있는 논리적 사고력 — 효율적인 로직을 빠르고 정확하게 기술하는 능력 — 을 측정한다는 점입니다.
PAST 문제 풀이 흐름
PAST에서 높은 점수를 얻기 위해서는 다음 세 단계를 효율적으로 수행해야 합니다:
1. 문제 설정을 이해하고, 풀어야 할 문제를 명확히 한다
↓
2. 문제를 풀기 위한 알고리즘을 설계한다
↓
3. 설계한 알고리즘이 올바르게 동작하도록 구현한다
이 과정은 소프트웨어 엔지니어나 데이터 사이언티스트뿐만 아니라, 프로그래밍을 활용하는 모든 직종에서 필요한 기본 역량과 직결됩니다.
시험 형식
시험 요항
| 항목 | 내용 |
| 문제 수 | 15문제 (A ~ O) |
| 만점 | 100점 |
| 시험 시간 | 5시간 (중간 휴식 없음) |
| 수험 방식 | 온라인 (실시간 수험 / 통상 수험) |
| 개최 빈도 | 연 4회 (3, 6, 9, 12월 첫째 토요일) |
| 사용 언어 | 40종 이상 (Python, C++, Java, Rust 등) |
배점 구조
문제는 A부터 O까지 15문제로 구성되며, 뒤로 갈수록 난이도가 높아집니다:
| 문제 | A | B · C | D ~ F | G ~ O |
| 배점 | 9점 | 각 8점 | 각 7점 | 각 6점 |
- 앞쪽 문제(A~C): 기초적이고 풀기 쉬운 문제가 주로 출제
- 중간 문제(D~F): G 이후 문제보다 오히려 풀기 쉬운 경우가 많음
- 후반 문제(G~O): 난이도가 높아지며, 고급 알고리즘과 데이터 구조 활용이 필요
수험 방식
| 방식 | 특징 |
| 실시간 수험 | 정해진 시각에 시작. 인증서에 실시간 마크 부여. 출제자에게 질문 가능 |
| 통상 수험 | 수험 가능 기간(약 3개월) 내 원하는 시간에 시작. 일정 조율이 유연 |
채점 시스템
PAST에서는 제출한 프로그램이 자동으로 채점됩니다:
- 수험자가 코드를 작성하여 제출
- PAST 테스트 서버에서 여러 테스트 케이스로 자동 실행
- 모든 테스트 케이스를 통과하면 정답으로 판정
"코드 미학"과 같은 주관적 기준은 존재하지 않으며, 올바른 출력을 내는지 여부만 평가합니다.
랭크 체계
PAST는 취득 점수에 따라 5단계 랭크를 인정합니다. 이 랭크는 AtCoder 공식 인증으로 발급됩니다.
| 랭크 | 점수 | 의미 |
| 엔트리 | 25 ~ 39점 | A~C 3문제를 확실히 풀면 도달 |
| 초급 | 40 ~ 59점 | 엔트리 + D~F 중 3문제 추가 |
| 중급 | 60 ~ 79점 | A~F 6문제 + G~O 중 3문제 |
| 상급 | 80 ~ 89점 | 15문제 중 못 푸는 문제가 3문제 이내 |
| 엑스퍼트 | 90 ~ 100점 | 15문제 중 14문제 이상 풀이. 사실상 거의 모든 문제를 해결해야 함 |
본 시리즈가 다루는 범위
상급(上級) ~ 엑스퍼트 랭크 달성에 필요한 알고리즘과 테크닉
본 시리즈 학습 로드맵
본 시리즈는 서적의 구성을 따라 上級編(상급편) 과 エキスパート編(엑스퍼트편) 으로 나뉩니다.
1️⃣ 상급편 (Part 1 ~ 8)
상급에 도달하려면 80점 이상이 필요합니다. 이는 "시험에서 못 푸는 문제가 3문제 이내"라는 의미입니다. 중급 수준의 테크닉을 확실히 익히고, 한 단계 더 높은 고급 테크닉의 일부를 해결할 수 있어야 합니다.
| Part | 주제 | 서적 출처 |
| Part 1 | 이분 탐색 심화 — 매개변수 탐색, 평균/중앙값 최대화 | 第1章 |
| Part 2 | 동적 계획법 심화 (1) — DP 복습 & 상태 전이 DP | 第2章 전반 |
| Part 3 | 동적 계획법 심화 (2) — 구간 DP, 비트마스크 DP, DP 고속화 | 第2章 중반 |
| Part 4 | 동적 계획법 심화 (3) — 트리 DP & 기타 DP | 第2章 후반 |
| Part 5 | 빈출 테크닉 — 변수 고정, 투 포인터, 상각 계산량 | 第3章 |
| Part 6 | 빈출 데이터 구조 — UnionFind, 최소 공통 조상(LCA) | 第4章 |
| Part 7 | 네트워크 플로우 — 최대 유량, 최소 비용 유량 | 第5章 |
| Part 8 | 세그먼트 트리 — Segment Tree, Lazy Propagation | 第6章 |
2️⃣ 엑스퍼트편 (Part 9 ~ 11)
엑스퍼트에 도달하려면 90점 이상이 필요합니다. 시험에서 못 푸는 문제가 1문제 이내여야 하므로, 최종 문제까지 확실히 풀어낼 수 있어야 합니다. 상급편에서 배운 내용의 조합과 응용이 핵심입니다.
| Part | 주제 | 서적 출처 |
| Part 9 | 세그먼트 트리 위의 DP — DP와 세그먼트 트리의 결합 | 第7章 |
| Part 10 | 평면 스캔(Sweep Line) — 테크닉과 데이터 구조의 융합 | 第8章 |
| Part 11 | 난문 도전! — 여러 해법을 조합하는 고난도 문제 | 第9章 |
이 시리즈의 특징
서적 원문을 단순 번역하지 않습니다
본 시리즈는 서적의 내용을 참고하되, 직접 학습하며 이해한 내용을 한국어로 재구성합니다. 필요에 따라 추가 설명, 다른 관점의 해설, 그리고 보충 예제를 추가합니다.
Java 코드로 재작성
서적의 예제 코드는 Python으로 작성되어 있지만, 본 시리즈에서는 Java를 기반으로 재작성하여 설명합니다. 서적의 원본 Python 소스코드는 GitHub 리포지토리에서 확인할 수 있습니다.
AtCoder 문제와 연결
각 파트에서 다루는 알고리즘/데이터 구조에 대응하는 AtCoder 문제를 함께 소개하여, 이론과 실전을 연결합니다.
참고 자료
- 서적: 「アルゴリズム実技検定 公式テキスト [上級]~[エキスパート]編」(マイナビ出版, 2023)
- 소스코드: tsutaj/pastbook-2-source-code (Github)
- PAST 공식 사이트: https://past.atcoder.jp
- AtCoder 공식 사이트: https://atcoder.jp
다음 파트 예고
[PAST 알고리즘 시리즈] Part 1 — 이분 탐색 심화 (二分探索 発展) 에서는 이분 탐색의 발전적 적용 — 매개변수 탐색, 최솟값의 최대화, 평균값/중앙값 최대화 기법을 다룹니다.