Step 326. 본선 출전 — 최고 수준의 경험: 압박 속에서 우리의 계획을 실행한다

Step 326. 본선 출전 — 최고 수준의 경험: 압박 속에서 우리의 계획을 실행한다

Level 4 — 전문가 | 난이도 ★★★★☆ | 예상 소요 시간 2일 (장비·컨디션 준비 + 오프라인 본선 출전 + 결과 기록)

전제: Step 325의 2주 훈련 완료 — 예선 미해결 문제 재현, 훈련 계획표 소화, 본선 당일 전략 문서 확정.

  • 준비물: 본선 당일 전략 문서, 오프라인 패키지(라이브러리·치트시트 로컬 사본), 노트북·어댑터·보조 배터리, 대회장 정보(동선·좌석·네트워크). 본선의 모든 대회 장면은 화면 예시이고, 당일 로그 분석 스크립트는 여러분의 기록으로 돌리는 실측 도구입니다.
  • 주의: 본선의 목표는 우승만이 아닙니다 — 팀 역할 수행, 계획 실행, 그리고 최고 수준의 풀이를 배우는 것까지가 목표입니다.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. 대회 운영 규칙(허용 도구, 통신 제한, 촬영 금지 구역)을 현장 공지로 확인하고 지킵니다.

드디어 본선입니다. 국내 최고 수준의 팀들이 한 공간에 모이고, 옆 테이블의 타이핑 소리와 대형 스코어보드의 점수 변동이 실시간으로 보입니다. 예선과 실력은 같아도 환경이 다릅니다 — 그리고 그 환경이 실력을 점수로 바꾸는 비율을 흔듭니다.

오늘의 주제는 그 흔들림의 관리입니다. 실력만큼 결과를 가르는 것이 압박 관리이고, 압박 관리의 실체는 "우리의 계획을 끝까지 실행하는 것"입니다. 대회 전 장비와 컨디션, 대회 중 운영과 스코어보드와의 거리, 대회 후 기록까지 — 본선 하루를 통과하는 법을 정리합니다.


1. 학습 목표

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

  • 오프라인 본선의 환경 차이(현장 분위기, 네트워크, 운영 규칙)를 설명하고 대비한다
  • 장비 점검과 전날 컨디션 관리를 체크리스트로 실행한다
  • 스코어보드 압박과 첫 시간의 정체를 "계획 실행"으로 통과한다
  • 푼 문제의 풀이를 즉시 공유 문서에 기록하는 습관을 유지한다
  • 종료 후 당일 로그를 분석해 시간 사용 구조를 점검하고 순위를 기록한다

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

오늘의 도구 한눈에 보기

구분 내용
언어·환경 파이썬 3(당일 로그 분석), 오프라인 패키지, 공유 문서, 팀 채널(현장 통신 규정 확인)
오늘의 명령 python step326_match_log.py — 대회 당일 시간 사용 구조 분석
필요한 개념 압박 관리, 스코어보드와의 거리, 컨디션 자원, 즉시 기록, 현장 운영 규칙
오늘의 산출물 장비 점검 완료 기록 + 본선 대회 로그 + 최종 순위 기록 + 소감 회의 메모

2-1. 오프라인 본선의 환경 — 무엇이 다른가

온라인 예선과 오프라인 본선의 차이를 세 축으로 정리합니다.

온라인 예선 오프라인 본선
분위기 각자의 공간, 조용함 한 공간 — 타 팀의 타이핑·환호·좌절이 들림
네트워크 집·사무실의 익숙한 환경 대회장 네트워크, 외부 인터넷 제한 가능
규칙 문서로 확인 현장 공지가 추가됨 — 허용 도구, 통신 수단, 자리 이탈 규정

세 축 모두 준비로 상쇄 가능합니다. 분위기는 미리 알면 충격이 줄고, 네트워크는 오프라인 패키지(Step 325의 벽 5)로 대비하며, 규칙은 시작 전 현장 공지를 반드시 들으면 됩니다. 문제는 준비로 상쇄되지 않는 네 번째 축, 압박입니다.

2-2. 압박 관리 — 보이는 것이 흔드는 것

본선의 압박은 세 가지 형태로 옵니다. ① 대형 스코어보드에 옆 팀의 풀이 현황이 실시간으로 뜹니다. ② 생각보다 첫 시간에 아무것도 안 풀립니다 — 문제가 예선보다 어려우니 당연한데도 당황합니다. ③ 팀원 중 누군가의 컨디션이 무너집니다.

세 가지의 공통 해법은 하나입니다 — 우리의 계획으로 돌아가는 것. 스코어보드는 회의 시간에만 보고(Step 324의 규칙), 첫 시간의 정체는 계획에 이미 적혀 있는 예상 시나리오이며, 컨디션 난조는 담당 재배정 규칙으로 처리합니다. 압박의 본질은 "지금 이 순간만 특별하게 느껴지는 것"이고, 계획은 그 특별함을 해소하는 장치입니다.

기억할 문장은 하나입니다 — 흔들리지 않고 우리의 계획을 실행하는 팀이 최종 순위에서 앞섭니다. 본선에서 기술적 역전은 드물지만, 운영적 역전은 매 대회 일어납니다.

2-3. 컨디션은 자원이다 — 전날부터의 관리

컨디션을 "당일 아침의 상태"로 생각하면 관리 대상이 아닙니다. 컨디션은 전날부터 충전하는 자원입니다.

컨디션 관리 규칙 (화면 예시):
- 전날: 평소 취침 시각 준수. 마지막 점검은 저녁 9시에 끝내고 이후 새 작업 금지
- 당일 아침: 평소보다 이른 기상 금지 — 대회장 도착 30분 여유만 확보
- 카페인: 평소 패턴 유지. "오늘은 특별히"의 에너지 음료는 오후의 급락을 만든다
- 대회 중: 식사 시간은 스킵하지 않는다 — 굶고 푼 문제는 없고, 굶어서 놓친 문제는 있다

규칙들이 소박해 보이지만, 본선 당일에 평소와 다른 무언가를 하는 것 자체가 리스크입니다. 8시간 대회의 후반 3시간을 지탱하는 것은 집중력 훈련이 아니라 혈당과 수면입니다.

2-4. 즉시 기록 — 현장에서 원료를 채굴한다

본선에서 푼 문제의 풀이는 그 자리에서 공유 문서에 기록합니다. 이유는 두 가지입니다. ① 대회 직후의 복기(Step 327)와 Write-up의 원료이고, ② 기록 행위가 곧 정리라서, 기록하다가 "이 단계를 건너뛰었네"를 발견하면 다음 문제의 시야가 넓어집니다.

기록의 최소 단위는 네 줄입니다 — 문제명, 핵심 기법, 결정적 단서, 소요 시간. 완성된 Write-up을 현장에서 쓰라는 것이 아닙니다. 네 줄이면 5분이고, 그 5분이 며칠 뒤의 몇 시간을 절약합니다. 대회가 끝나면 기억의 해상도는 하루마다 절반이 됩니다 — 현장의 네 줄이 며칠 뒤의 백 줄보다 정확합니다.


3. 따라 하기

3-1. 대회 전 — 장비 점검과 컨디션

대회 전날, 장비 점검 목록을 실행합니다. Step 300의 세 축(장비·네트워크·문서)을 오프라인 본선용으로 갱신한 것입니다.

본선 장비 점검 목록 (화면 예시):
[ ] 노트북 — 전원 어댑터, 보조 배터리, 마우스, (허용된다면) 외장 키보드
[ ] 오프라인 패키지 — 라이브러리·치트시트·문서 로컬 사본, USB 백업
[ ] 오프라인 검증 — 네트워크를 끈 상태로 문제 하나를 끝까지 풀 수 있는가
[ ] 환경 — VM·도커 이미지 사전 빌드 완료, 디스크 여유 공간 확인
[ ] 계정 — 대회 플랫폼 로그인 정보, 팀 채널 접속 확인 (현장 통신 규정과 함께)
[ ] 신체 — 수면 계획, 아침 동선, 간식과 물

검증 항목이 핵심입니다: 목록의 파일이 "있는가"가 아니라 네트워크를 끄고 "돌아가는가"로 확인합니다. 오프라인 패키지의 완성도는 존재가 아니라 작동으로 증명됩니다.

3-2. 대회 중 — 확정된 계획의 실행

본선 당일, Step 325에서 확정한 당일 전략 문서대로 진행합니다. 화면 예시로 재구성한 본선의 하루입니다.

[09:30] 입장·좌석 세팅. 현장 공지 청취 — 외부 인터넷 일부 제한 확인,
        팀 내 통신은 좌석 대화만 허용 (메신저 금지)
[10:00] 시작. 전 문제 열거 — 8문제, 40분 소요. 우선순위표 확정
[10:40] web warmup 착수 (담당 A), crypto 기본 (담당 B), pwn 스택 (담당 C)
[11:15] 스코어보드에 상위 팀의 연속 플래그 — 회의 시간 아니므로 확인하지 않음
[12:00] warmup·crypto 해결 (+250). 예상보다 40분 느림 — 계획 범위 내
[13:00] 점심. 도시락 동선은 아침에 확인해 둠
[15:00] 1차 회의 — 스코어보드 확인: 5위. 4위와 100점 차. 계획 유지 판단
[16:10] rev 중급 90분 무진전 — 교대 규칙 발동, B에게 인계
[17:30] forensics 해결 (+150), B의 rev에서 진전 — 안티디버깅 우회 발견
[19:30] rev 해결 (+250). 풀이 네 줄 기록을 그 자리에서 문서에
[21:00] 마감 1시간 전 — 미제출 플래그 최종 점검, 기록 정리
[22:00] 종료

읽는 법: 두 장면을 봅니다. ① 11:15 — 스코어보드의 상위 팀 플래그가 보이는 순간, "확인하지 않음"이 실행됐습니다. 이것이 압박 관리의 실체입니다 — 압박이 없는 것이 아니라, 압박 앞에서도 계획의 문장이 이기는 것. ② 19:30 — 풀이 직후의 네 줄 기록. 피로한 시점이지만, 이 5분이 Step 327의 격차 분석을 가능하게 합니다.

3-3. 당일 로그 분석 — 시간이 어디로 갔는가

대회 종료 직후, 시간대별 기록을 스크립트에 넣어 시간 사용 구조를 점검합니다. step326_match_log.py로 저장하세요 — LOG를 실제 기록으로 교체하면 됩니다.

# step326_match_log.py — 본선 당일 타임라인 로그 분석기
# (시작 시각, 종료 시각, 활동, 결과)
LOG = [
    ("09:00", "09:40", "전 문제 열거·난이도 표시", "12문제 목록화 완료"),
    ("09:40", "10:35", "web warmup 풀이", "플래그 제출 성공 (+100)"),
    ("10:35", "11:20", "crypto 기본 문제", "플래그 제출 성공 (+150)"),
    ("11:20", "12:30", "pwn 스택 문제 착수", "오프셋 확정까지"),
    ("12:30", "13:00", "점심·휴식", "-"),
    ("13:00", "14:40", "pwn 스택 문제 계속", "익스플로잇 완성 (+200)"),
    ("14:40", "16:10", "rev 중급 — 90분 무진전", "교대 규칙 발동 → 팀원 인계"),
    ("16:10", "17:30", "forensics 신규 착수", "플래그 제출 성공 (+150)"),
    ("17:30", "17:50", "스코어보드 확인·중간 회의", "현재 5위, 4위와 100점 차"),
    ("17:50", "19:00", "rev 인계받은 팀원 진전", "안티디버깅 우회 발견"),
    ("19:00", "19:30", "저녁·휴식", "-"),
    ("19:30", "21:00", "rev 마무리", "플래그 제출 성공 (+250)"),
    ("21:00", "22:00", "풀이 기록 정리·마감", "Write-up 원료 5건 확보"),
]

def mins(s, e):
    sh, sm = map(int, s.split(":")); eh, em = map(int, e.split(":"))
    return (eh * 60 + em) - (sh * 60 + sm)

solve = rest = stuck = ops = 0
solves = []
for s, e, act, res in LOG:
    d = mins(s, e)
    if "휴식" in act or "점심" in act or "저녁" in act:
        rest += d
    elif "무진전" in act:
        stuck += d
    elif "열거" in act or "스코어보드" in act or "기록 정리" in act:
        ops += d
    else:
        solve += d
    if "플래그 제출 성공" in res:
        pts = int(res.split("+")[1].rstrip(")"))
        solves.append((act.split(" — ")[0], pts))

total = sum(mins(s, e) for s, e, _, _ in LOG)
print("=== 본선 당일 시간 사용 분석 ===")
print(f"총 대회 시간: {total//60}시간 {total%60}분n")
for label, v in [("문제 풀이", solve), ("무진전(교대 발동)", stuck),
                 ("운영(열거·회의·정리)", ops), ("식사·휴식", rest)]:
    bar = "#" * round(v / total * 40)
    print(f"  {label:<14}{v:>4}분 ({v/total*100:4.1f}%) {bar}")

print(f"n획득 점수: {sum(p for _, p in solves)}점 ({len(solves)}문제)")
for name, p in solves:
    print(f"   +{p:>3}  {name}")

print("n점검: 운영 시간이 전체의 15%를 넘지 않는가? ->",
      "OK" if ops / total <= 0.15 else "운영 과다 — 회의·정리 간소화 필요")
print("점검: 무진전 90분 뒤 교대가 실제로 발동됐는가? ->",
      "OK (교대 규칙 준수)" if stuck else "교대 기록 없음")

위 로그 데이터로 실행한 실측 출력입니다:

=== 본선 당일 시간 사용 분석 ===
총 대회 시간: 13시간 0분

  문제 풀이          510분 (65.4%) ##########################
  무진전(교대 발동)      90분 (11.5%) #####
  운영(열거·회의·정리)   120분 (15.4%) ######
  식사·휴식           60분 ( 7.7%) ###

획득 점수: 650점 (4문제)
   +100  web warmup 풀이
   +150  crypto 기본 문제
   +150  forensics 신규 착수
   +250  rev 마무리

점검: 운영 시간이 전체의 15%를 넘지 않는가? -> 운영 과다 — 회의·정리 간소화 필요
점검: 무진전 90분 뒤 교대가 실제로 발동됐는가? -> OK (교대 규칙 준수)

읽는 법: 이 도구는 칭찬이 아니라 구조를 보여 줍니다. ① 문제 풀이 65.4% — 건강한 비율입니다(대회의 본질에 시간의 3분의 2). ② 교대 규칙 준수 OK — 90분 무진전 뒤 실제로 인계가 일어났고, 그 문제(rev)가 결국 +250점으로 풀렸습니다. 규칙이 점수로 환산된 사례입니다. ③ 주목할 것은 운영 과다 경고입니다 — 15.4%로 기준(15%)을 간신히 넘었습니다. 열거 40분, 회의 20분, 정리 60분의 합입니다. 다음 대회의 개선점이 이 숫자에서 나옵니다 — 마감 정리 60분을 절반으로 줄이는 규칙(풀이 기록을 대회 중에 분산)이 후속 조치가 됩니다. 자기 팀의 시간 구조를 이렇게 숫자로 보는 습관이, 다음 대회 운영 계획의 근거가 됩니다.

3-4. 시상과 풀이 확보 — 대회의 두 번째 수확

종료 후 시상과 함께 상위 팀의 풀이가 공개되거나 발표됩니다. 이것을 반드시 확보합니다 — 이번 대회의 목표는 "우승"이 아니라 "우승팀의 풀이를 배우는 것"까지 포함하기 때문입니다.

종료 직후 확보 목록 (화면 예시):
[ ] 최종 순위·점수 기록 (공식 스코어보드 캡처)
[ ] 상위 팀 풀이 발표 메모 / 공개 Write-up 링크 수집
[ ] 우리가 못 푼 문제의 출제자 해설 — 있으면 반드시 수집
[ ] 자리에서 15분 소감 회의 — 감상이 아니라 "가장 아까운 1시간"과
    "가장 잘한 규칙" 각 1개씩

자세한 분석은 내일의 일입니다(Step 327). 오늘은 원료의 확보만 확실히 합니다.

3-5. 상위 팀과의 격차가 보일 때 — 위축의 처리

본선에서는 상위 팀과의 격차가 숫자로, 그리고 소리로(옆 테이블의 환호) 전달됩니다. 위축은 자연스러운 반응입니다 — 처리법을 미리 알고 있으면 됩니다.

처방은 두 문장입니다. ① 본선 진출 자체가 상위 수준의 증거입니다 — 예선을 통과한 팀 목록에 우리가 있다는 사실은 팩트이고, 팩트는 감정보다 오래갑니다. ② 격차는 위협이 아니라 지도입니다 — 그들이 푼 문제는 "풀 수 있는 문제"이고, 그 풀이는 곧 공개됩니다. 우리가 할 일은 그 지도를 가져가는 것뿐입니다. 위축의 감정은 통과시키고, 행동은 계획으로 돌립니다.


4. 미션과 연습문제

미션 — 본선 완주와 기록 확보

  1. 대회 전날 장비 점검 목록(3-1)을 실행합니다 — 특히 "네트워크를 끄고 문제 하나 완주" 검증을 포함합니다.
  2. 컨디션 관리 규칙(2-3)을 전날부터 적용합니다 — 평소 취침 시각, 평소 카페인 패턴.
  3. 본선에서 확정된 당일 전략 문서대로 운영합니다 — 스코어보드 확인은 회의 시간에만, 교대 규칙 발동, 풀이의 즉시 네 줄 기록.
  4. 종료 후 30분 안에 당일 로그를 정리하고 step326_match_log.py로 시간 구조를 분석합니다.
  5. 최종 순위를 기록하고, 상위 팀 풀이·출제자 해설을 확보한 뒤 15분 소감 회의를 마칩니다.

연습문제

문제 1. 오프라인 본선의 세 가지 환경 차이(분위기·네트워크·규칙) 중 준비로 상쇄할 수 없는 네 번째 요소는 무엇이며, 그 대응의 실체는 무엇인가요?

문제 2. "스코어보드는 회의 시간에만 본다"는 규칙이 집중력을 지키는 원리를, 실시간 확인이 만드는 행동 변화와 연결해 설명해 보세요.

문제 3. 3-3의 실측 분석에서 "운영 15.4% — 과다 경고"가 나왔습니다. 이 결과가 다음 대회 운영 계획에 주는 구체적 개선 지점을 두 가지 제시해 보세요.

문제 4. 풀이를 "그 자리에서 네 줄" 기록하는 것이 며칠 뒤의 완성된 Write-up보다 정확한 이유를, 기억의 특성과 연결해 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

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

  1. 검증의 실증성: 오프라인 패키지가 "파일이 있다"가 아니라 "네트워크를 끄고 문제 하나를 끝까지 풀었다"로 확인됐는가.
  2. 컨디션의 규칙화: 전날 취침 시각과 당일 아침 동선이 계획대로 실행됐는가 — "특별한 무언가"를 하지 않았는가.
  3. 계획 실행의 증거: 대회 로그에 스코어보드 확인 시각이 회의 시각과 일치하는가 — 로그가 곧 증거입니다.
  4. 즉시 기록의 존재: 푼 문제마다 네 줄 기록(문제명·기법·단서·소요)이 당일에 작성됐는가.
  5. 분석과 확보: 로그 분석 출력의 점검 두 항목을 확인했고, 순위 기록·상위 팀 풀이·소감 회의 메모가 남았는가.

연습문제 해답

문제 1 해답. 준비로 상쇄할 수 없는 것은 압박입니다 — 스코어보드의 실시간 변동, 첫 시간의 정체, 팀원의 컨디션 난조가 만드는 심리적 흔들림입니다. 압박 자체는 제거할 수 없으므로, 대응의 실체는 "압박 속에서도 우리의 계획을 실행하는 것"입니다. 구체적으로는 사전에 정해 둔 규칙(스코어보드 확인 시간, 교대 규칙, 담당 재배정)이 피로하고 흔들린 판단을 대신하는 것입니다. 압박 관리는 감정의 제거가 아니라 규칙의 집행입니다.

문제 2 해답. 실시간 확인은 두 가지 행동 변화를 만듭니다. ① 비교 불안 — 타 팀의 플래그가 뜰 때마다 "우리도 그 문제를 잡아야 하나"라는 유혹이 생기고, 정해진 착수 순서가 흔들립니다. ② 주의 분산 — 스코어보드 갱신을 확인하는 행위 자체가 문제에 대한 깊은 사고를 몇 분 단위로 끊습니다. CTF 문제의 진전은 긴 몰입 구간에서 나오므로, 끊김은 곧 점수 손실입니다. 회의 시간에만 보는 규칙은 정보를 차단하는 것이 아니라 정보의 도착 시각을 통제해, 정보가 전략 수정(회의)에만 쓰이고 몰입 파괴에는 쓰이지 않게 하는 장치입니다.

문제 3 해답. 첫째, 마감 정리 60분의 분산 — 풀이 기록을 대회 중 각 문제 직후 네 줄로 작성하게 하면 종료 후 정리가 30분 이하로 줄고, 확보된 30분은 문제 풀이 시간이 됩니다. 둘째, 열거 40분의 단축 — 열거 양식(기록할 항목의 템플릿)을 사전에 준비해 두면 복사·붙여넣기로 기록 시간이 줄어 25~30분에 완료할 수 있습니다. 두 조치로 운영 시간을 15% 아래로 내리는 것이 다음 대회 계획의 구체적 수정안이 됩니다. 이처럼 로그 분석은 감상이 아니라 다음 계획의 수정안을 수치로 도출하는 도구입니다.

문제 4 해답. 기억은 시간이 지나면서 세부를 잃고 결과 중심으로 재구성됩니다 — 특히 문제 풀이에서 "결정적 단서가 무엇이었는가"는 결과를 알게 된 순간부터 당연해 보이기 시작해, 며칠 뒤에는 "처음부터 보였던 것"처럼 왜곡됩니다. 대회 직후의 네 줄은 그 왜곡 이전의 상태, 즉 탐색 과정의 실제 분기점을 담고 있습니다. 이 원료가 있어야 Step 327의 격차 분석에서 "우리는 왜 그 단서를 못 봤는가"를 정확히 대조할 수 있습니다. 정확성은 완성도보다 시의성에서 나옵니다 — 며칠 뒤의 백 줄보다 당일의 네 줄이 분석에 더 가치 있는 이유입니다.

완료 기준 체크리스트

  • [ ] 장비 점검 목록을 실행하고 오프라인 작동 검증(네트워크 차단 상태 완주)을 통과했다
  • [ ] 전날부터 컨디션 관리 규칙(수면·카페인·동선)을 적용했다
  • [ ] 현장 공지(통신 규정·네트워크 제한)를 확인하고 운영에 반영했다
  • [ ] 스코어보드 확인을 회의 시간으로 제한하는 규칙을 지켰다
  • [ ] 교대 규칙이 필요한 순간에 실제로 발동됐다 (또는 불필요했음이 로그로 확인된다)
  • [ ] 푼 문제의 풀이 네 줄 기록을 그 자리에서 작성했다
  • [ ] 당일 로그를 스크립트로 분석하고 시간 구조의 점검 결과를 확인했다
  • [ ] 최종 순위 기록·상위 팀 풀이 확보·소감 회의를 완료했다

6. 흔한 실수와 해결

벽 1. 대회장 네트워크에서 VM/도구가 업데이트를 요구해요

증상: 시작 직후 도구가 업데이트를 시도하며 멈추거나, VM 이미지가 라이선스 확인을 요구합니다.

Unable to connect to the update server. Please check your network connection.

원인: 대회장 네트워크의 외부 제한과 맞물린 사고입니다 — "집에서는 됐는데"의 전형입니다 (오프라인 검증을 건너뛰면 발생).

해결: 사전 대비가 답입니다 — 3-1의 "네트워크를 끄고 문제 하나 완주" 검증이 정확히 이 사고를 미리 드러냅니다. 현장에서 당했다면: 대회장 네트워크 정책을 운영진에게 확인하고(허용되는 업데이트 채널이 있을 수 있습니다), 그래도 안 되면 오프라인 패키지의 사본 도구로 전환합니다. 교훈은 기록하세요 — 검증 목록에 "자동 업데이트 끄기" 항목이 다음 대회부터 추가됩니다.

벽 2. 첫 두 시간 동안 아무것도 못 풀었어요 — 패닉이 와요

증상: 예선과 다른 난이도에 초반이 정체되고, 스코어보드에는 타 팀의 플래그가 뜹니다.

원인: 본선 문제는 원래 예선보다 어렵습니다 — 초반 정체는 이상 징후가 아니라 예상 시나리오입니다. 패닉은 "예상 밖"이라는 착각에서 옵니다.

해결: 당일 전략 문서에 이 시나리오를 미리 적어 두세요 — "첫 플래그까지 2~3시간 걸리는 것이 정상이다." 문서의 문장이 패닉의 해독제입니다. 그리고 행동 규칙은 하나 — 정체 중에도 할 일은 정해져 있습니다: 열거 단계로 돌아가 각 문제의 "가장 작은 확인 가능한 것"부터 다시 시작합니다. 진전은 플래그만이 아닙니다 — 가설의 폐기도 진전입니다. "이 길은 아니다"가 세 개 쌓이면 네 번째가 길인 경우가 많습니다.

벽 3. 팀 채널(디스코드)이 현장에서 금지됐어요

증상: 현장 공지로 외부 메신저 사용이 금지되고, 온라인 예선의 소통 체계가 통째로 무력화됩니다.

원인: 오프라인 본선의 운영 규칙입니다 — 커뮤니케이션 채널이 현장 규정에 종속됩니다.

해결: 대응은 두 단계입니다. ① 즉시 대체 체계 — 같은 공간에 있으므로 좌석 대화 + 공유 화이트보드(종이 한 장)로 전환합니다. 중요한 것은 인수인계 문서의 습관을 유지하는 것 — 말로 넘기면 빠뜨리니, 문제 옆에 "시도한 것/다음 후보"를 적어 두는 메모지 방식으로 대체합니다. ② 사전 예방 — 다음부터는 운영 계획 회의(Step 325)에서 "통신 수단이 금지되면 무엇으로 대체하는가"를 안건에 넣습니다. 규칙 확인은 전술의 일부라는 것을 현장에서 배운 셈입니다.

벽 4. 팀원 한 명의 컨디션이 대회 중반에 무너졌어요

증상: 집중력 저하, 단순 실수 연발, 담당 문제에서 진전 소실.

원인: 컨디션은 개인의 의지 문제가 아니라 팀의 자원 관리 문제입니다 — 그리고 무너진 뒤의 자책이 2차 피해를 만듭니다.

해결: 당일 전략 문서에 "담당 재배정 규칙"이 있어야 합니다 — 컨디션 난조 시 담당 문제를 다른 팀원에게 넘기고, 그 팀원은 기록 정리·열거 지원 같은 저강도 작업으로 이동합니다. 중요한 것은 이것을 전력 이탈이 아니라 정상 운영으로 취급하는 팀 분위기입니다. 팀원의 컨디션 난조는 본선의 상수입니다 — 변수가 아니라 상수이므로, 대응은 사전에 계획됩니다.

벽 5. 결과가 기대에 못 미쳐요 — 본선 경험이 실패처럼 느껴져요

증상: 입상권에 들지 못했고, 상위 팀과의 격차만 확인했다는 감정.

원인: 목표 설정의 문제입니다 — 첫 본선의 목표를 우승으로 잡으면 대부분의 팀이 "실패"가 됩니다.

해결: 목표를 정정하세요 — 본선 경험 자체가 다음 단계의 자산입니다. 구체적으로 오늘 손에 남은 것을 세어 보세요: ① 국내 최고 수준 팀들과 같은 문제를 같은 시간에 푼 경험, ② 확보된 상위 팀의 풀이와 출제자 해설, ③ 시간 구조가 숫자로 분석된 당일 로그, ④ 다음 대회의 운영 개선안. 이 네 가지는 우승팀이 아니어도 가져갈 수 있는, 아니 오히려 우승팀보다 절실하게 가져가야 하는 수확입니다. Step 327에서 이 원료로 격차를 분석합니다 — 오늘의 "실패"는 내일의 분석 데이터입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
오프라인 환경 3축 분위기·네트워크·규칙 — 준비로 상쇄 가능한 차이
압박 관리 흔들림의 제거가 아니라 계획 실행의 유지 — 규칙이 판단을 대신
스코어보드와의 거리 정보의 차단이 아니라 도착 시각의 통제 — 회의 시간에만
컨디션 자원 전날부터 충전하는 자원 — "평소와 같게"가 최고의 전략
즉시 기록 풀이 직후 네 줄 — 왜곡 이전의 탐색 과정을 담는 원료
담당 재배정 컨디션 난조는 변수가 아니라 상수 — 사전에 계획된 운영

오늘의 도구·명령어

도구·명령 하는 일
python step326_match_log.py 당일 로그의 시간 사용 구조 분석과 규칙 준수 점검
장비 점검 목록 장비·오프라인 패키지·환경·계정·신체의 여섯 칸
오프라인 작동 검증 네트워크를 끄고 문제 하나 완주 — 패키지의 실증
네 줄 기록 양식 문제명·핵심 기법·결정적 단서·소요 시간
종료 후 확보 목록 순위 기록·상위 팀 풀이·출제자 해설·소감 회의

명령어보다 중요한 감각

본선은 실력의 무대인 동시에 규칙의 무대입니다. Level 3에서 만든 규칙들(열거, 교대, 즉시 기록, 회의)이 이 무대에서 처음으로 진짜 압박을 받습니다. 스코어보드가 눈앞에서 움직이고 옆 팀이 환호하는 공간에서 "우리의 계획대로"를 지키는 것 — 그것이 본선이 가르치는, 온라인에서는 배울 수 없는 기술입니다.

그리고 순위와 무관하게 오늘의 진짜 산출물을 기억하세요 — 당일 로그와 확보된 풀이들입니다. 그 원료가 Step 327에서 우승팀과의 격차를 유형별로 해부하는 재료가 됩니다. 본선의 점수는 하루로 끝나지만, 원료는 팀의 자산으로 남습니다.


전부 체크되면 Step 326 완료입니다.