"시뮬레이션(Simulation)" 유형은 문제를 현실처럼 단계별로 흉내 내면서 그대로 구현하는 방식
🔎 시뮬레이션 유형의 특징
-
문제 상황을 그대로 코드로 옮겨야 한다
- 수학적 공식으로 한 번에 풀리지 않고, 문제에서 설명한 과정을 차례대로 따라가야 함.
- 규칙, 조건, 이벤트를 그대로 코드로 재현하는 것이 핵심.
-
자료구조/알고리즘 지식보다 구현력이 중요
-
구현 실수에 주의
- 시뮬레이션 문제는 논리보다는 꼼꼼한 구현이 중요하므로, 작은 실수가 오답을 만드는 경우가 많음.
- 예) 좌표 범위 체크, 시간 변환, 출력 포맷 맞추기 등.
🛠️ 자주 나오는 유형
- 격자판 시뮬레이션 (Grid Simulation)
- 로봇 움직임, 뱀 게임, 미로 탐색 등
- 예: [뱀 (백준 3190)], [상어 초등학교 (21608)]
- 시간/이벤트 진행 시뮬레이션
- 문제에서 “몇 분 뒤, 어떤 이벤트 발생” → 그대로 따라가며 상태 갱신
- 예: 농구 경기 리드 시간(지금 문제), 주차 요금 계산
- 큐/스택 기반 시뮬레이션
- 프로세스 스케줄링, 카드게임 등
- 예: [카드2 (2164)], [프린터 큐 (1966)]
- 규칙 기반 상태 변화
- 세포 분열, 온도 조절, 불 퍼짐 같은 시뮬레이션
- 예: [불! (4179)], [스타트 택시 (19238)]
🎯 시뮬레이션 문제 풀이 전략
1. 문제를 단계별로 쪼개라
- 시뮬레이션 문제는 대부분 "상황 재현"이에요.
- 따라서 문제를 읽을 때 큰 흐름 → 작은 단계로 분해하세요.
- (예) "한 턴마다: 위치 이동 → 충돌 확인 → 점수 갱신" 같은 식으로 정리.
- 이 과정을 코드에 그대로 옮기면 실수 줄어듭니다.
2. 시간/턴 단위로 흘러가게 구현
- “몇 초 뒤, 몇 분 뒤, n번 반복” 같은 조건은 루프로 돌리는 게 안전합니다.