Infomation
- 처음에는 시작 칸에 말 4개가 있다.
- 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 파란색 화살표를 타야 하고, 이동하는 도중이거나 파란색이 아닌 칸에서 이동을 시작하면 빨간색 화살표를 타야 한다. 말이 도착 칸으로 이동하면 주사위에 나온 수와 관계 없이 이동을 마친다.
- 게임은 10개의 턴으로 이루어진다. 매 턴마다 1부터 5까지 한 면에 하나씩 적혀있는 5면체 주사위를 굴리고, 도착 칸에 있지 않은 말을 하나 골라 주사위에 나온 수만큼 이동시킨다.
- 말이 이동을 마치는 칸에 다른 말이 있으면 그 말은 고를 수 없다. 단, 이동을 마치는 칸이 도착 칸이면 고를 수 있다
- 말이 이동을 마칠 때마다 칸에 적혀있는 수가 점수에 추가된다.
Idea
- 입력받는 10개의 수는 주사위가 순서대로 주어지는 것이므로, 순서대로 주어지는 주사위 값을 4개의 말 중 하나와 대응하면 될 것이다. 모든 경우의 수는 4^10 = 1,048,576 번이므로, 시간복잡도가 높지만 문제가 될 것 같지 않다.
- 각 주사위 수에 말을 대입하면서 다음과 같은 경우에는 조합을 건너뛴다.
- 현재의 말이 이미 도착한 경우
- 말이 이동을 완료한 후 위치에 다른 말이 존재할 경우
- 조합이 완료되었다면, 점수를 그 전의 점수와 비교하여 더 큰 값으로 갱신한다.
Design
- 말의 구조체를 생성한다. 구조체에는 말이 현재 존재하고있는 위치와, 이미 도착 칸에 있는지에 대한 정보가 있어야 한다.
- 말판에 대한 배열이 생성되어야 한다. 말판이 blue일 때와