§ 1문제 정의
출제 당시 사용자 user.cpp는 비어 있었다. 공개된 골격은 Coordinates와 TrafficSignal — signal(현재 상태)과 next_signal(다음 사이클의 상태)을 가진다.
일반적인 접근: 격자 도로망 위에 100개의 교차로가 있고, 각 사이클마다 “현재 신호”에 따라 도로의 통행이 결정된다. 다음 사이클로 넘어가기 전 next_signal을 모든 교차로가 동시에 적용 — 동기식 셀룰러 오토마타와 닮았다.
좋은 풀이는 보통 그린 웨이브(green wave): 같은 방향으로 흐르는 도로 묶음의 신호가 도미노처럼 순차 점멸. 흐름 효율을 최대화하면 점수(혼잡 비용)가 줄어든다.
동기식이지만 결과는 파동이다. 신호의 도미노를 설계하라.
§ 2예제 시각화 — 4×3 격자, 2-페이즈 신호
FIG. 7 — green-wave signal phasing
STEP 01 / 6
SPACE play/pause · ← → step · R reset
§ 3알고리즘 골격
// 사용자가 직접 구현
for cycle in range(T):
// 1. 현재 신호로 traffic step 시뮬레이션
advance_traffic(signal[])
// 2. 다음 신호 계산: green wave 패턴
for intersection i:
next_signal[i] = wave_at(i.x, cycle + 1)
// 3. 동기식 전환 — 모든 교차로 동시에
for i: signal[i] = next_signal[i]