Step 295. ★ CTF #9: 상위 30% 목표 대회 — 체급을 재는 시험대

Step 295. ★ CTF #9: 상위 30% 목표 대회 — 체급을 재는 시험대

Level 3 — CTF 실전과 공격 스킬 심화 | 난이도 ★★★★☆ | 예상 소요 시간 2일 (대회 24~48시간 + 갭 분석)

전제: Step 289의 상위 50% 달성(대회 #6), Step 291의 라이브러리 실전 검증, Step 293의 팀 전술 확정.

  • 준비물: 주말 대회 1개(CTFtime에서 24~48시간짜리), 확정된 팀 전술 문서, 익스플로잇 라이브러리(Step 290), 갭 분석 스크립트, 4시간 알람. 이 챕터의 대회 스코어보드 장면은 화면 예시이고, 갭 분석 스크립트는 여러분의 대회 결과로 직접 돌리는 실측 도구입니다.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. CTF 대회는 주최 측이 문제 환경을 공식 개방한 합법 무대이며, 대회 인프라·다른 팀·대회 외 시스템에 대한 공격은 규정 위반이자 범죄입니다.
  • 이 챕터는 테스트입니다 — 아홉 번째 대회. 목표를 상위 50%에서 30%로 올려 팀의 체급을 잽니다.

상위 50%와 상위 30%는 숫자 20의 차이가 아닙니다. 50%는 "쉬운 문제를 빠짐없이 푸는 팀"으로 도달할 수 있습니다. 30%부터는 다릅니다 — 참가 팀의 절반 이상이 쉬운 문제를 다 풀기 때문에, 순위는 Medium급 이상에서 몇 문제를 추가로 뜯어내는가로 갈립니다. 즉 30% 목표는 "기본기의 완성도"가 아니라 "중상위권 문제의 득점력"을 시험하는 선언입니다.

오늘의 대회는 그래서 시험대입니다. 목표를 달성하면 체급 상승이 확인되고, 미달이면 부족분이 점수와 문제 좌표로 구체화됩니다. 어느 쪽이든 얻는 것이 있습니다 — 단, 미달을 "실력이 안 늘었다"로 읽는 순간 얻는 것이 사라집니다. 갭 분석이 오늘의 핵심 기술인 이유입니다.


1. 학습 목표

이 챕터를 끝내면 다음을 할 수 있습니다:

  • 최근 대회 데이터로 분야별 득점 가능 예측표를 작성해 전력을 수치로 파악한다
  • "쉬운 문제 속전속결 → Medium급 화력 집중"의 시간 배분 전술을 실행한다
  • 4시간 단위 중간 점검으로 목표 대비 진척을 관리한다
  • 종료 후 순위 대신 점수 구조로 갭을 분석해 부족분을 특정 문제 좌표로 변환한다
  • 목표 미달 시에도 다음 대회의 단일 개선 목표 1개를 도출한다

2. 배경 지식 — 오늘의 도구와 개념

오늘의 도구 한눈에 보기

구분 내용
언어·환경 CTFtime 주말 대회, 팀 협업 도구(디스코드·상태표), 파이썬(갭 분석)
오늘의 명령 python gap_analysis.py — 순위 백분위·커트라인·부족 점수 계산
필요한 개념 백분위 커트라인, 점수 구조 분석, 4시간 중간 점검, 단일 개선 목표
오늘의 산출물 대회 로그 + 분야별 득점 예측표 + 갭 분석 결과 + 개선 목표 1개

2-1. 왜 30%인가 — 목표 상향의 의미

대회 #6에서 상위 50%를 찍었습니다(Step 289). 목표를 그대로 두면 대회는 훈련이 아니라 반복이 됩니다. 목표 상향의 규칙은 "마지막으로 달성한 선의 다음 눈금" — 50%를 확인했으니 다음 눈금은 30%입니다.

동시에 30%는 구조적으로 다른 구간입니다. 대부분의 대회 스코어보드는 세 층으로 나뉩니다 — 쉬운 문제만 푼 하위 절반, Medium급을 몇 개 뜯은 중상위 30~50%대, Hard까지 가는 상위 10~20%. 30% 진입은 두 번째 층의 입구이고, 그 입구의 문지방은 Medium급 득점력입니다. 오늘 대회의 진짜 질문은 "이기는가"가 아니라 "우리는 Medium을 얼마나 먹는 팀인가"입니다.

2-2. 분야별 득점 예측표 — 전력을 수치로

감으로 "이번엔 잘할 것 같다"는 전략이 아닙니다. 최근 대회(#6~#8)의 분야별 성적을 표로 놓고, 이번 대회에서 분야별로 기대 득점을 매깁니다.

분야 최근 3회 득점 기대 근거
web 2·3·2문제 3문제 라이브러리 검증 완료, 주력
pwn 1·1·1문제 1~2문제 힙 특훈 효과 미검증
crypto 1·2·1문제 2문제 복기로 공통 인수 패턴 추가
rev 0·1·0문제 1문제 로테이션 때 서브 담당 경험
forensics 1·0·1문제 1문제 변동성 큼, 보수적으로

이 표의 쓸모는 두 가지입니다 — 대회 중 "예측보다 못 풀고 있는 분야"를 조기에 발견하는 경보기, 그리고 종료 후 "예측과 실제의 차이"로 팀의 자기 인식 정확도를 재는 자입니다.

2-3. 4시간 중간 점검 — 압박을 절차로 관리하기

목표가 높아지면 압박이 커지고, 압박은 판단을 좁게 만듭니다. 한 문제에 3시간을 붙잡히는 것이 대표 증상입니다. 대응책은 의지가 아니라 절차입니다 — 4시간마다 알람이 울리면 무조건 손을 떼고 세 가지를 확인합니다.

4시간 점검 질문 3개:
1. 예측표 대비 현재 득점 — 어디가 앞서고 뒤처지는가
2. 지금 붙잡고 있는 문제 — 경과 시간이 예산(2시간 스왑 규칙)을 넘었는가
3. 남은 시간 재배분 — "가장 가까운 문제"의 우선순위가 바뀌었는가

이 점검이 없으면 압박은 축적되고 막판 2시간에 폭발합니다. 절차가 감정을 대신 관리하게 만드는 것 — 대회 운영의 반은 이것입니다.

2-4. 갭 분석 — 미달을 좌표로 번역하기

목표에 미달했을 때의 반응이 두 갈래입니다 — "실력이 안 늘었나"(감정), "어느 문제가 부족했나"(분석). 전자는 다음 행동을 만들지 못하고, 후자는 훈련 계획이 됩니다.

갭 분석의 구조는 단순합니다. 상위 30% 경계의 점수(커트라인)에서 우리 점수를 빼면 부족 점수가 나오고, 그 부족분을 "못 푼 문제 중 어떤 조합이었으면 메워졌나"로 변환합니다. 숫자로 된 자책은 없고, 좌표가 있는 과제만 남습니다. 이 변환을 스크립트로 만들어 두면 대회가 끝날 때마다 같은 절차로 돌릴 수 있습니다.


3. 따라 하기

3-1. 대회 전 — 예측표와 전술 확정

킥오프 미팅(30분)에서 2-2의 예측표를 팀원과 함께 채우고, 전술을 확정합니다. 오늘의 전술은 두 단계입니다.

1단계 (시작~4시간): 쉬운 문제 속전속결
  - 전 문제 훑기 30분 → 분야별 최하 난이도부터 라이브러리 풀가동
  - 목표: 기본 점수(예측표의 확실한 몫)를 4시간 안에 전부 확보
2단계 (4시간~종료): Medium급 화력 집중
  - 남은 시간의 70%를 Medium급 2~3문제에 투입
  - 문제당 예산 2시간, 초과 시 스왑 규칙 발동 (Step 281)

: 1단계가 늘어지면 2단계가 증발하고, 그러면 30%의 문지방인 Medium급 득점 기회 자체가 사라집니다. 쉬운 문제를 "여유 있게" 푸는 습관이 중상위권 진입을 막는 가장 흔한 원인입니다.

3-2. 대회 중 — 4시간 점검의 실제

알람이 울리면 상태표 앞에 팀이 모입니다(화면 예시):

[+4:00 점검]
예측: web 3 · pwn 1~2 · crypto 2 · rev 1 · forensics 1
실제: web 3 ✓ · pwn 0 ✗ · crypto 2 ✓ · rev 0 · forensics 1 ✓
판정: pwn 지연. babyheap 1시간 50분 경과 — 10분 안에 결론, 아니면 스왑
재배분: rev는 담당자 단독 유지, pwn에 web 담당 1명 컨설팅 투입

읽는 법: 점검의 결과물은 "열심히 하자"가 아니라 재배분 결정입니다. 예측표가 있기에 "pwn이 뒤처진다"가 감정이 아니라 표의 빨간 칸으로 보이고, 스왑 규칙이 있기에 붙잡힘을 끊는 결정이 개인의 체면 문제가 아니라 절차의 실행이 됩니다.

3-3. 종료 직후 — 스코어보드에서 커트라인 읽기

대회가 끝나면 스코어보드에서 세 숫자를 가져옵니다 — 전체 팀 수, 우리 순위, 그리고 상위 30% 경계 순위의 점수. 경계 점수는 스코어보드에서 (전체 팀 수 × 0.3)번째 팀의 점수를 읽으면 됩니다.

화면 예시 (대회 종료 후 스코어보드 메모):

전체 412팀 / 우리 156위 / 2350점
상위 30% 경계 = 412 × 0.3 ≈ 123위
123위 팀의 점수 = 3050점
→ 부족분 700점

주의 하나 — 커트라인 점수는 대회가 끝난 뒤에 읽으세요. 대회 중에는 스코어보드가 요동치고(특히 동적 채점 대회는 문제 배점이 계속 변합니다), 중간 순위에 일희일비하면 점검 절차가 감정 대응으로 오염됩니다. 대회 중에 보는 것은 순위가 아니라 예측표 대비 우리 득점뿐입니다.

3-4. 갭 분석 스크립트 — 부족분을 문제 좌표로

3-3의 세 숫자와 "못 푼 문제 목록(배점 포함)"을 넣으면, 부족분을 메울 후보 조합을 계산해 주는 스크립트입니다. gap_analysis.py로 저장하세요.

# gap_analysis.py — 상위 30% 목표 갭 분석기
# 대회가 끝날 때마다 위쪽 상수 4개와 UNSOLVED 목록만 바꿔서 실행
TOTAL_TEAMS = 412          # 전체 팀 수
OUR_RANK = 156             # 우리 팀 최종 순위
OUR_SCORE = 2350           # 우리 팀 득점
CUTOFF_RANK = int(TOTAL_TEAMS * 0.30)
CUTOFF_SCORE = 3050        # 경계 순위 팀의 점수 (스코어보드에서 조회)

UNSOLVED = [  # (이름, 분야, 배점, 전체 해결 팀 수) — 못 푼 문제만
    ("babyheap",      "pwn",       400, 38),
    ("jwt-forge",     "web",       300, 61),
    ("rsa-fault",     "crypto",    350, 44),
    ("packet-river",  "forensics", 250, 89),
    ("rev-me-gently", "rev",       300, 57),
]

pct = OUR_RANK / TOTAL_TEAMS * 100
gap = CUTOFF_SCORE - OUR_SCORE
print(f"전체 {TOTAL_TEAMS}팀 중 {OUR_RANK}위 → 상위 {pct:.1f}%")
print(f"상위 30% 경계: {CUTOFF_RANK}위 (점수 {CUTOFF_SCORE}점)")
print(f"부족 점수: {gap}점\n")
print("[갭을 메울 후보 — 못 푼 문제 중 배점 내림차순]")
acc = 0
for name, cat, pts, solves in sorted(UNSOLVED, key=lambda x: -x[2]):
    acc += pts
    mark = "★ 누적 충족" if acc >= gap else ""
    print(f"  {name:<14} {cat:<10} {pts:>4}점 (해결 {solves}팀)  누적 {acc}점 {mark}")
print(f"\n결론: {gap}점 = 상위 후보 2~3문제 분량. Medium급 득점력이 30%의 열쇠.")

실행 결과입니다 — 3-3의 예시 데이터를 넣은 실측 출력입니다:

전체 412팀 중 156위 → 상위 37.9%
상위 30% 경계: 123위 (점수 3050점)
부족 점수: 700점

[갭을 메울 후보 — 못 푼 문제 중 배점 내림차순]
  babyheap       pwn         400점 (해결 38팀)  누적 400점
  rsa-fault      crypto      350점 (해결 44팀)  누적 750점 ★ 누적 충족
  jwt-forge      web         300점 (해결 61팀)  누적 1050점 ★ 누적 충족
  rev-me-gently  rev         300점 (해결 57팀)  누적 1350점 ★ 누적 충족
  packet-river   forensics   250점 (해결 89팀)  누적 1600점 ★ 누적 충족

결론: 700점 = 상위 후보 2~3문제 분량. Medium급 득점력이 30%의 열쇠.

읽는 법: "상위 37.9% — 미달"이 출력의 끝이 아니라 시작입니다. 부족분 700점은 babyheap(400) + rsa-fault(350) 두 문제면 메워졌다는 뜻이고, 두 문제의 "해결 팀 수"(38팀·44팀)는 그 문제들이 꿈의 문제가 아니라 상위 10% 안팎의 팀들이 실제로 푼 문제였음을 보여줍니다. 미달의 원인이 "우리는 안 되는가"가 아니라 "힙 문제와 RSA 공통 인수 응용, 이 두 좌표"로 구체화됐습니다 — 이것이 갭 분석입니다.

3-5. 회고 — 단일 개선 목표 1개

갭 분석이 끝나면 팀 회고에서 다음 대회의 단일 개선 목표 딱 1개를 정합니다. 하나만입니다.

회의록 예시 (화면 예시):
갭 분석 결과: 부족 700점 = 힙(babyheap) + RSA 응용(rsa-fault)
개선 목표 (단일): "다음 대회까지 힙 유형 특훈 10문제 — babyheap을 끝까지 재현하는 것부터"
보류: rsa-fault는 블록 A 복기에서 공통 인수 패턴을 이미 플레이북에 넣음 — 별도 특훈 불필요

왜 하나만인가: 개선 목표가 3개면 대회 사이 2주에 전부 분산돼 전부 어중간해집니다. 목표 1개는 훈련 시간의 80%가 그 좌표에 쏠린다는 뜻이고, 다음 대회에서 "그 유형이 또 나왔을 때 결과가 바뀌었는가"로 목표의 성패를 깨끗하게 판정할 수 있습니다. 갭 분석이 좌표를 주고, 단일 목표가 집중을 보장합니다 — 이 두 장치가 물려야 대회 사이클이 도는 것입니다.


4. 미션과 연습문제

미션 — 대회 #9 완주 + 갭 분석 완료

  1. CTFtime에서 주말 대회를 골라 등록하고, 킥오프 미팅에서 분야별 득점 예측표를 작성합니다.
  2. 두 단계 전술(4시간 속전속결 → Medium급 집중)로 대회를 진행하고, 4시간 점검을 빠짐없이 수행합니다 — 점검마다 재배분 결정을 기록합니다.
  3. 종료 후 스코어보드에서 전체 팀 수·우리 순위·30% 경계 점수를 확인합니다.
  4. gap_analysis.py의 상수 4개와 UNSOLVED 목록을 우리 대회 결과로 바꿔 실행하고, 부족 점수와 후보 문제 조합을 확정합니다.
  5. (달성 시) 상위 30% 진입을 팀과 축하하고, 그래도 갭 분석은 수행합니다 — 다음 목표(20%?)의 기준선이 됩니다.
  6. (미달 시) 자책 없이 갭 분석 결과를 회고하고, 단일 개선 목표 1개를 문서화합니다.

연습문제

문제 1. 상위 50%와 상위 30%의 차이가 "쉬운 문제의 완결성"이 아니라 "Medium급 득점력"인 이유를, 대회 스코어보드의 세 층 구조와 연결해 설명해 보세요.

문제 2. 두 단계 전술에서 1단계(쉬운 문제 속전속결)에 4시간 제한을 두는 이유는 무엇인가요? 1단계가 늘어질 때 구체적으로 무엇이 사라지는지 답해 보세요.

문제 3. 커트라인 점수를 대회 중이 아니라 종료 후에 읽어야 하는 이유는 무엇인가요? 대회 중에 확인해야 하는 지표는 무엇인가요?

문제 4. 갭 분석 결과의 "해결 팀 수"가 의미하는 것은 무엇인가요? 부족했던 문제의 해결 팀 수가 38팀이라는 정보가 훈련 계획에 주는 함의를 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

검증 기준으로 확인하세요.

  1. 예측표의 존재: 분야별 기대 득점과 근거가 적힌 표가 킥오프에서 만들어졌는가 — "이번엔 잘해 보자"는 예측표가 아닙니다.
  2. 점검의 기록: 4시간 단위 점검이 시간과 함께 기록돼 있고, 각 점검이 재배분 결정으로 끝났는가 — 결정 없는 점검은 구경입니다.
  3. 스왑 규칙 준수: 2시간 초과 문제에 스왑이 발동됐거나, 연장이면 그 근거가 기록됐는가.
  4. 갭 분석의 완결: 스크립트 출력에 부족 점수·후보 문제 조합·해결 팀 수가 있고, 팀이 그 좌표에 합의했는가.
  5. 단일 목표: 개선 목표가 정확히 1개이고, 성패 판정 기준("다음 대회에서 그 유형 해결")이 함께 적혔는가.
  6. 미달 시 태도: 회의록에 자책 표현이 없고 부족분이 점수·문제 좌표로만 기술됐는가 — 회의록의 언어가 팀 문화입니다.

연습문제 해답

문제 1 해답. 스코어보드의 하위 절반은 쉬운 문제 득점으로 채워지기 때문에, 쉬운 문제를 다 푸는 것은 50%의 필요조건이지 차별화 요인이 아니기 때문입니다. 30% 위쪽부터는 참가 팀 대부분이 기본 점수를 보유하므로 순위를 가르는 것은 Medium급 이상의 추가 득점입니다. 따라서 30% 목표는 "기본기 점검"이 아니라 "중상위권 문제를 몇 개 뜯는 팀인가"를 재는 시험이 되고, 준비도 Medium급 대응력(특훈·라이브러리·페어 공략)에 집중되어야 합니다.

문제 2 해답. 2단계의 시간을 보호하기 위해서입니다. 쉬운 문제는 풀 수 있다는 안도감 때문에 "조금만 더 다듬고"가 붙기 쉬운데, 1단계가 2시간 늘어지면 그 시간은 전부 Medium급 공략 시간에서 빠져나갑니다. 30%의 문지방인 Medium급 득점 시도 자체가 증발하는 것입니다. 4시간 제한은 기본 점수를 버리라는 뜻이 아니라, 기본 점수 확보가 전체 일정을 잡아먹지 못하게 하는 둑입니다 — 제한이 있어야 "속전속결"이 슬로건이 아니라 일정이 됩니다.

문제 3 해답. 대회 중 스코어보드는 불완전하고(특히 동적 채점에서는 배점이 계속 변해 커트라인이 유동적), 중간 순위는 감정을 흔들어 점검 절차를 오염시키기 때문입니다. 대회 중의 비교 대상은 다른 팀이 아니라 우리의 예측표입니다 — "예측 대비 어디가 뒤처지는가"만이 재배분에 쓸 수 있는 신호이고, 순위는 종료 후에야 분석 재료가 됩니다. 시계를 보는 시점과 스코어보드를 보는 시점을 분리하는 것이 압박 관리의 절차입니다.

문제 4 해답. 해결 팀 수는 그 문제의 실질 난이도의 시장 가격입니다. 38팀이 풀었다는 것은 상위 10% 안팎의 팀들에게는 풀리는 문제였다는 뜻 — 즉 부족분이 "세계 정상급만 아는 비기"가 아니라 "우리보다 반 수 위 팀이 보유한 기법"이라는 뜻입니다. 이 정보는 훈련 계획을 낙관도 비관도 아닌 정확한 곳에 놓습니다 — 몇 주의 특훈으로 도달 가능한 거리에 있다. 반대로 해결 팀이 3팀뿐인 문제가 부족분이었다면 "아직 갈 거리"로 읽고 목표를 조정하는 것이 정확한 분석입니다.

완료 기준 체크리스트

  • [ ] 킥오프에서 분야별 득점 예측표(기대·근거 포함)를 작성했다
  • [ ] 두 단계 전술(4시간 제한 + Medium급 70%)로 대회를 진행했다
  • [ ] 4시간 점검을 모두 수행하고 재배분 결정을 기록했다
  • [ ] 종료 후 커트라인 점수를 스코어보드에서 확인했다
  • [ ] gap_analysis.py를 우리 결과로 실행해 부족 점수와 후보 조합을 확정했다
  • [ ] 회고에서 단일 개선 목표 1개(판정 기준 포함)를 문서화했다
  • [ ] (미달 시) 회의록이 점수·좌표의 언어로만 쓰였다 — 자책 표현 0건

6. 흔한 실수와 해결

벽 1. 스코어보드에서 "경계 순위 팀의 점수"를 못 찾겠어요

증상: 스코어보드에 우리 순위는 있는데 123위 팀이 누군지 세기가 어렵습니다.

원인: 대회 플랫폼마다 스코어보드 표시가 다르고, 일부는 상위 일부만 펼쳐 보여줍니다.

해결: 대부분의 플랫폼은 스코어보드를 CSV/JSON으로 내려받는 기능이 있습니다. 내려받아 정렬한 뒤 (전체 팀 수 × 0.3)행을 읽으면 정확합니다. 그런 기능이 없으면 페이지를 위에서부터 세지 말고, 표를 복사해 스프레드시트에 붙여 넣은 뒤 행 번호로 찾으세요. 대략값으로는 점수 분포 그래프(플랫폼이 제공하는 경우)의 30% 지점을 읽어도 됩니다 — 갭 분석의 정밀도는 수십 점 단위면 충분합니다.

벽 2. 4시간 점검인데 다들 몰입 중이라 아무도 안 모여요

증상: 알람이 울려도 "지금 막 뭔가 보인다"며 점검이 미뤄집니다.

원인: "막 보이는 순간"이야말로 붙잡힘의 시작인 경우가 많습니다 — 점검을 미루자는 제안 자체가 점검이 필요한 신호입니다.

해결: 점검을 발언이 아니라 서면으로 바꾸세요 — 알람이 울리면 각자 작업을 멈추지 않아도 되니 상태표에 세 줄(진행/예측 대비/요청)을 채우는 겁니다. 3분이면 끝나고 몰입도 끊기지 않습니다. 단, 스왑 규칙 시간을 넘긴 문제는 예외 없이 손을 떼는 것 — 그것이 규칙의 존재 이유입니다.

벽 3. 목표 미달인데 팀 분위기가 가라앉았어요

증상: 종료 직후 채널이 조용하고, 회고 참여율이 낮습니다.

원인: 순위라는 숫자는 감정을 직격합니다 — 정상입니다. 문제는 그 감정으로 회고를 건너뛰는 것입니다.

해결: 회고의 첫 안건을 갭 분석 스크립트 실행으로 고정하세요. 감정 정리는 숫자를 보면서 하는 것이 빠릅니다 — "상위 37.9%"를 보며 끙끙대다가 "부족 700점 = 두 문제"라는 출력이 뜨는 순간 대화가 분석으로 전환됩니다. 그리고 회의록 첫 줄에 적으세요 — "미달은 데이터다. 목표가 없었다면 우리는 이 부족분을 몰랐다."

벽 4. 개선 목표를 3개 정했어요 — 다 중요해 보여서요

증상: 힙 특훈, 리버싱 기초, 속도 훈련이 동시에 목표가 됐습니다.

원인: 갭 분석이 여러 좌표를 보여주면 전부 잡고 싶어집니다 — 욕심이 아니라 책임감의 형태로 옵니다.

해결: 대회 사이 기간(보통 2주)에 실제 투입 가능한 시간을 먼저 계산하세요. 팀원 1인당 주 6시간이면 12시간 — 특훈 하나(10문제)가 겨우 들어가는 분량입니다. 나머지 목표는 "보류"로 명시해 다음 대회 갭 분석 때 다시 꺼내면 됩니다. 목표를 버리는 게 아니라 순번을 정하는 것입니다.

벽 5. 예측표가 매번 빗나가요 — 쓸모가 있는 건가요?

증상: 기대 득점과 실제가 3회 연속 어긋납니다.

원인: 빗나가는 예측표도 데이터입니다 — 팀이 자기 전력을 과대평가(또는 과소평가)하고 있다는 뜻입니다.

해결: 어긋남의 방향을 기록하세요. 매번 같은 분야를 과대평가한다면 그 분야의 실력 평가 기준(어떤 유형을 풀 수 있어야 "됩니다"인가)을 다시 정해야 합니다. 예측의 정확도 자체가 팀의 메타 인식 지표입니다 — 예측이 정확해지는 날, 팀은 자기 체급을 아는 팀이 된 것입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
30%의 문지방 쉬운 문제 완결이 아니라 Medium급 득점력으로 갈리는 구간
분야별 득점 예측표 전력의 수치화 — 대회 중 경보기, 종료 후 메타 인식 지표
두 단계 전술 4시간 속전속결(기본 확보) → Medium급 70%(체급 도전)
4시간 중간 점검 압박을 절차로 관리 — 결과물은 재배분 결정
갭 분석 미달을 "부족 점수 + 문제 좌표"로 번역하는 기술
단일 개선 목표 2주의 집중을 보장하는 장치 — 판정 기준과 함께

오늘의 도구·명령어

도구·명령 하는 일
python gap_analysis.py 백분위·커트라인·부족 점수·후보 조합 계산
스코어보드 CSV 내려받기 경계 순위 점수의 정확한 조회
득점 예측표 킥오프의 산출물 — 분야별 기대와 근거
점검 서면 3줄 진행/예측 대비/요청 — 몰입을 끊지 않는 점검
회의록 단일 목록 칸 개선 목표 1개 + 판정 기준 + 보류 목록

명령어보다 중요한 감각

이 대회에서 배워야 할 것은 결과가 아니라 목표와 결과 사이의 거리를 읽는 법입니다. 30%를 달성했든 미달했든, 스크립트 출력의 마지막 줄이 다음 훈련의 첫 줄이 되는 구조 — 이것이 대회를 "참가"에서 "사이클"로 바꾸는 장치입니다.

한 가지만 기억하세요. 갭 분석이 보여주는 부족분은 항상 생각보다 작습니다 — "우리는 안 돼"가 계산해 보면 "두 문제"입니다. 감정으로 재면 무한대였던 거리가, 점수로 재면 특훈 몇 주의 거리로 줄어듭니다. 그것이 이 챕터가 여러분에게 남기고 싶은 유일한 숫자 감각입니다.


전부 체크되면 Step 295 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.