문제에서 제시한 과정을 그대로 시뮬레이션하여 결과를 도출하는 유형입니다. 구현 문제의 일종이지만, 특히 과정을 순차적으로 따라가는 것이 핵심입니다.
- 문제에서 요구하는 과정을 정확히 구현
- 시간 순서대로 상태 변화를 추적
- 조건 분기가 많고 코드가 길어질 수 있음
- 실수하기 쉬운 디테일이 많음
- 로봇 이동, 방향 전환
- 뱀 게임
- 주사위 굴리기
- 테트리스
- 초 단위로 상태 업데이트
- 큐 시뮬레이션
- 프로세스 스케줄링
- 공 튀기기
- 충돌 처리
- 중력 시뮬레이션
- 카드 게임
- 보드 게임
- 주사위 게임
// 시계 방향 회전
int[] dx = {-1, 0, 1, 0}; // 북, 동, 남, 서
int[] dy = {0, 1, 0, -1};
int dir = 0;
// 시계 방향 90도 회전
dir = (dir + 1) % 4;
// 반시계 방향 90도 회전
dir = (dir + 3) % 4;while (시뮬레이션 조건) {
// 1. 명령 읽기
String command = readCommand();
// 2. 상태 업데이트
updateState(command);
// 3. 유효성 검사
if (!isValid()) {
handleInvalid();
}
// 4. 시간 증가
time++;
}-
초기 상태 설정
- 문제에서 주어진 초기 조건을 정확히 설정
-
경계 조건
- 배열 범위, 이동 가능 영역 체크
-
방향 처리
- 좌표계와 방향 정의를 명확히
-
시간/순서 관리
- 이벤트가 발생하는 순서를 정확히 처리
-
상태 복사
- 필요시 이전 상태를 저장
// 각 단계마다 상태 출력
void printState() {
System.out.println("=== Step " + step + " ===");
for (int i = 0; i < n; i++) {
System.out.println(Arrays.toString(board[i]));
}
System.out.println();
}| 번호 | 문제 제목 | 세부 알고리즘 | 난이도 | 상태 | 링크 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |