한화 신입사원 AI 솔루션 챌린지 · 쉬운 버전 — 5분이면 충분

불꽃놀이가 끝나면,
100만 명이 한꺼번에 집에 간다.

그날 밤 여의도에서 벌어지는 일과 우리가 만든 해결책을, 배경지식 없이 읽히게 설명한다. · 자세한 보고서 · 피치 덱 · 실제 서비스 화면

STEP 1 · 문제지도앱은 "오늘의 여의도"를 모른다

지도앱 여의나루역 "가장 가까운 역으로 안내합니다" → 실제 그날 밤 여의나루 20:40~21:40 무정차 도로는 통제, 인파는 한 방향으로
그림 1 — 축제날엔 가장 가까운 역이 문을 닫는다. 지도앱은 평소의 길을 안내한다.

그래서 모두가 같은 곳으로 몰리고, 역 앞에서 몇 시간을 서 있게 된다. 문제는 정보 부족이 아니라 "오늘만의 규칙"을 아는 지도가 없다는 것이다.

얼마나 몰리나 — 축제날 저녁 여의도 인구는 평소 토요일의 4.4~4.8배다 (서울시 생활인구, 2024·2025년 공통).

STEP 2 · 해법"지금 어디로 나가면 되나"를 3초 안에

출구 7개의 혼잡을 시간대별로 미리 예측해서, 신호등 색으로 보여주는 웹페이지를 만들었다.

여유주의경계혼잡
신길여유
마포 도보여유
국회주의
여의도(5)주의
샛강주의
여의나루통제

쇼 직후 21시의 예측 화면 축소판. 핵심은 상태("혼잡함")가 아니라 행동("신길로 가라")을 알려준다는 점이다.

9/1에 지도가 붙었다. CCTV 23대와 서울시 구역 등급을 한 장의 면으로 합쳐 그린다 — 색은 붐빔, 진하기는 확신. 관측이 없는 곳은 색이 옅어져 "잘 모른다"가 보인다. 그 위에서 지금 서 있는 곳부터 고른 역까지, 조금 돌더라도 덜 막히는 길과 걸리는 시간을 그린다. 축제 밤에는 최단 경로가 가장 붐비는 길이기 때문이다.

STEP 3 · 재료비밀 재료는 "작년에 실제로 일어난 일"

2024.10.5 누가 · 몇 시에 어느 역에서 탔나 전부 기록됨 2025.9.27 같은 기록, 거의 같은 모양 2년 연속 재현 → "올해도 이렇게 움직일 것이다" 좋은 예측의 뼈대
그림 2 — 서울시 공개 데이터에 지난 두 축제일의 지하철 기록이 전부 남아 있다.

사람들의 귀가 습관은 해마다 거의 같았다. 여의도(5)역으로 29%, 샛강으로 17%… 이 비율이 2년 연속 그대로다. 그래서 "작년처럼 움직인다"를 뼈대로 쓰고, 올해 다른 부분만 고치면 된다.

STEP 4 · 계산계산은 곱셈 하나다

오늘 규모 α오늘 인파가 작년의 몇 배인가. 당일 실시간 관측으로 계속 갱신
×
작년 그 역의 몫여의도(5) 29% · 샛강 17% … 실측 비율
×
언제 도착하나쇼가 끝나고 걷는 시간만큼 늦게 도착. 사람이 빽빽하면 더 느리게

케이크에 비유하면 — 오늘 케이크의 크기(α)를 재고, 작년과 같은 비율로 자르고(몫), 걷는 시간만큼 늦게 내놓는다(도착).

머신러닝을 안 쓴 이유: 배울 데이터가 축제일 이틀뿐이다. 이틀로 학습시키면 "외우기"가 된다. 대신 사람이 부품 하나하나 검증할 수 있는 곱셈식을 골랐다.

STEP 5 · 검증진짜 맞나? — 타임머신 시험

2025년 답안지를 가리고, 2024년 공부만으로 2025년 문제를 풀어 봤다. 그리고 실제 2025년 기록과 채점했다.

0~100% 적중

출구 혼잡 "등급"(여유/주의/경계/혼잡) 기준. 남은 불확실성은 숨기지 않고 "0.65~1.41" 같은 범위로 함께 보여준다 — 모르는 것을 아는 척하지 않는 게 이 서비스의 원칙이다.

STEP 6 · 보너스붐비기 1시간 전에 미리 안다

여의도로 오는 사람들은 그날 어딘가의 역에서 지하철을 탔다. 멀리서 오는 사람일수록 먼저 탄다. 그래서 출발역들의 승차를 지켜보면, 여의도가 붐비기 전에 미리 안다.

여의도 도착 성수 35분 1시간 먼저 탄다 영등포시장 3분 거의 동시에 탄다 김포공항 제외 공항 손님이 섞여 신호가 흐림 출발역 12곳 합산: 승차가 여의도 도착을 1시간 앞선다 — 일치도 0.99
그림 3 — 거리가 멀수록 신호가 먼저 온다. 거리 순서와 신호 순서가 정확히 맞는다 = 우연이 아니라는 증거.
출발역여의도까지신호가 오는 때일치도 r
성수35분1시간 먼저0.95
영등포시장3분같은 시각0.86
김포공항25분제외 (공항 유동 혼입)−0.19

12곳 전체 표와 판정 기준은 자세한 보고서 §3.6에 있다. 이 신호는 축제 당일 예측에 바로 넣지 않고 관측만 한다 — 분 단위 정확도를 아직 검증하지 못했기 때문이다.

STEP 7 · 발견데이터가 알려준 뜻밖의 사실 둘

① 최악은 제일 큰 역이 아니다

쇼 직후 가장 위험한 곳은 제일 큰 여의도(5)역이 아니라 샛강역이다. 9호선 역이라 처리 용량이 작다.

② 여의나루는 "문 여는 22시"가 위험

통제가 풀리면 기다리던 사람들이 한꺼번에 몰린다. 부하 1.00 — 그날 밤 최고치이자 용량 한계다. 이 값은 두 해 평균이고, 2년 중 1년은 용량을 28% 넘겼다.

이 둘은 지도앱이 절대 알려주지 못한다. 우리 서비스가 존재하는 이유다.

STEP 8 · 당일죽어도 죽지 않는 3층 구조

사전층행사 전에 완성한 예측표 — 실시간이 전부 죽어도 서비스는 된다
당일층5분마다 실시간 관측으로 예측을 갱신 (α 보정). 수집기 3개가 죽으면 30초 안에 다시 띄우는 감시 루프가 지킨다
화면층인터넷이 끊겨도 기기에 저장된 마지막 화면이 남는다

설계 원칙: 아래층이 죽어도 위층이 산다. 축제날 밤 통신은 반드시 느려지기 때문에, 처음부터 그걸 전제로 만들었다.

STEP 9 · 점검우리 것을 우리가 먼저 깨 봤다

9/1, 실전 나흘 전에 "이 시스템을 깨라"는 주문을 AI(Claude Code)에 주고, 지적마다 어느 파일 몇 번째 줄인지 근거를 요구했다. 시험 전날 친구에게 답안지를 주고 틀린 데를 찾아 달라는 것과 같다.

39개를 찾았다

일곱 차례. 치명 6 · 높음 10 · 중간 16 · 낮음 7. 예컨대 "발행이 실패해도 아무도 모른다", "관람객 화면 지도가 처음부터 안 그려졌다".

치명·높음은 전부 고쳤다

고치기 전에 실패하는 테스트부터 썼다. 자동 테스트가 22개에서 122개가 됐다. 한 번은 다른 AI(Codex)에게 우리 것을 공격시켰다.

4개는 먼저 밝혔다

코드로 못 고치는 약점 — 이를테면 "9호선 3개 역은 검증 데이터가 없다". 남이 찾기 전에 보고서에 적었다.

1개는 글로 닫았다

예측 범위는 그대로 두되 "실제 오차는 이보다 못하지 않다"는 하한(42~44%)을 보고서에 못 박았다. 좁은 범위를 믿지 말라는 뜻이다.

전체 목록과 처리 근거는 자세한 보고서 §5와 저장소의 redteam-20260901.md에 있다.

STEP 10 · 실전9월 5일 밤, 이렇게 됐다

9/4 오후 5시에 켠 시스템을 끄지 않고 9/6 새벽 1시까지 32시간 돌렸다. 본번 12시간 동안 5분마다 예측을 발행했다 — 287번.

18:10여의나루역이 공지(20:40)보다 두 시간 반 먼저 문을 닫았다. 예년 이력을 병기해 둔 문구가 맞았다
21:27쇼가 계획(21:10)보다 17분 늦게 끝났다. 현장에서 한 줄 입력하자 예측이 그만큼 밀렸다
22:06여의나루 재개통 직후, 화면이 가장 붉었다 — 부하 0.93, 「경계」까지. 심각은 없었다
23시사람들이 예측보다 훨씬 오래 빠져나갔다 — 실측은 피크의 92%, 우리 예측은 41%. 놓친 것이다
맞힌 것

가장 붐비는 시각 22시. 유출 곡선의 모양이 실측과 0.66 상관.

서울시 예측은

같은 데이터로 12시간 전에 낸 공식 예측이 저녁 피크를 9배 낮게 봤다. 5분마다 다시 재야 하는 이유다.

놓친 것

23시 꼬리. 하루치 실측으로 고치면 외우기가 되니 고치지 않고 적어 두었다.

그날 화면은 운영·관람객 재생으로 그대로 열린다. 숫자는 자세한 보고서 §6.

더 알고 싶다면 — 자세한 보고서 (근거·수식·검증 전체) · 실제 서비스 화면 · 코드 저장소
본문의 모든 숫자는 서울시 공개 데이터에서 나왔고, 저장소의 명령으로 재현할 수 있다. 기준일 2026-09-08.