쉬기,음식
이번에는 두가지의 요구사항 변경이 있다.
바퀴는 여정에서 9가 나오면 제자리에서 한 턴을 쉴 수 있다. 따라서 한 턴에 움직이는 바퀴는 전체 바퀴의 수 N보다 같거나 작다.
판 위에는 음식이 몇 군데 떨어져 있을 수 있다. 정상바퀴가 이 음식을 먹으면 다음 따라오는 일정기간(5턴) 동안 일시적 슈퍼바퀴가 된다. 태생적 슈퍼바퀴도 음식을 먹기는 하지만 자신에게는 아무 영향이 없다. 바퀴가 음식을 먹으면 그 셀의 음식 개수가 하나 줄어든다. 한 셀에 여러개의 음식이 있을 수 있다.
정상바퀴가 슈퍼바퀴가 된 동안에 다시 음식을 먹으면 "임시 슈퍼바퀴"의 기간이 현 시점에서 5턴만큼으로 재설정된다. 예컨대, 처음 음식을 먹고 슈퍼바퀴가 된 상태에서 2턴이 지난 다음에 다시 음식을 먹으면 앞으로 5턴 동안 슈퍼바퀴가 된다.
한 턴에 둘 이상의 바퀴가 동시에 음식이 있는 칸에 도착했을 때, 바퀴의 수가 음식의 수보다 많다면 바퀴들은 다음 순서로 음식을 먹는다.
- 정상바퀴
- 일시적 슈퍼바퀴
- 태생적 슈퍼바퀴
- 만약 우선순위가 같은 바퀴가 음식을 놓고 경쟁한다면 처음 입력했던 순서가 2차 우선순위가 된다.
입력자료는 다음과 같다.
10 10
2 6
3 9
4 8
4 7
-1
0 0 S
22222449944945
3 7 N
999121212645372
2 5 N
57597575757597597575757
8 8 S
663999
999
판의 크기는 총 10행10열이고, 2행6열, 3행9열, 4행8열, 4행7열에 음식이 미리 비치되어 있다(이 때 행과 열은 앞서와 마찬가지로 각각 0부터 시작). -1은 음식정보의 끝을 의미한다.
출력정보는 앞서와 유사하다. 한번에 두칸을 움직이면 움직인 횟수도 두번이고, 한번 쉴 때에는 움직인 횟수가 증가하지 않는다. (고로, 결국 "움직인 횟수"는 움직인 거리와 비슷하다고 보면 된다) 판의 정보는 예전과 동일한 양식으로 출력한다.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
모든 요구사항 변경이 끝났다. 히딩크처럼 "여전히 배가 고프다"면, 이 게임을 삼차원(큐빅)으로 확장하는 것을 고려해 보라. 입력/출력자료의 스펙 등은 모두 자신이 판단해서 직접 정의하라. 어찌 되었건 여기까지 도달한 것을 진심으로 축하한다.
대부분의 학습자는 일단 문제의 답에 도달하면 그 경험을 완전히 망각해 버리는 나쁜 습관이 있다 -- 이런 사람들은 문제를 풀긴 풀었으되, 다음 번에 유사 문제를 접하면 여전히 그 문제를 처음 접했을 때를 답습하는 제자리 걸음을 하기 쉽다. 자신의 경험을 반추해 보는 것은 효과적인 학습에 있어 필수적인 요소다. 다음 활동을 꼭 해보길 권한다. 엄청나게 많은 것을 배우게 될 것이다.