related topic: simulation
알고리즘 분류: 시뮬레이션, bfs
- 아래의 방법을 K 번 반복한다.
- 활성 큐에 있는 세포의 주변 활성 예상 지점을 후보큐에 추가한다.
- (단, 최대 생명력이 더 높아질 경우에만 새로 갱신 및 후보큐에 추가한다.)
- 생명력이 다한 세포는 활성 큐에서 제거한다.
- 후보 큐에 있는 세포를 비활성 큐에 추가한다.
- 단 map[row][col] 에 기록 된 최대 생명력과 후보 큐에 있는 세포의 생명력이 같을 때만 추가한다.
- 해당 visited[row][col] 을 방문처리 한다.
- 비활성 큐에 있는 세포 중 활성 상태가 되는 세포를 활성 큐에 추가한다.
- 세포가 활성상태가 되는 조건은 (현재 시간 - 세포의 생성시간 = 세포의 생명력). 즉 생성된 지 생명력 만큼의 시간이 지났을 때이다.
- 활성 상태가 되는 세포는 비활성 큐에서 제거한다.
- 아직 활성 상태가 되지않는 세포는 다시 비활성 큐에 추가한다.
주의할 점은 아래와 같은 조건이 있다.
(줄기 세포의 크기에 비해 배양 용기의 크기가 매우 크기 때문에 시뮬레이션에서 배양 용기의 크기는 무한하다고 가정한다.)
즉, 배양 용기의 크기가 무한하다고 가정하였다. 따라서 주어진 조건 내에 도달할 수 있는 범위를 초과하는 배양 용기의 크기를 적절하게 설정하여야 한다.
'Problem solving' 카테고리의 다른 글
[BOJ] 1918 후위 표기식 (0) | 2018.10.30 |
---|---|
[BOJ] 1032 명령 프롬프트 (0) | 2018.10.23 |
[sw expert] 모의 SW 역량테스트 - 5658 보물상자 비밀번호 (0) | 2018.10.18 |
[sw expert] 모의 SW 역량테스트 - 5656 벽돌 깨기 (0) | 2018.10.17 |
[BOJ] 1010 다리놓기 (0) | 2018.09.30 |