문제 링크
끔찍한 시뮬레이션 문제이다.
별다른 특이 사항 없이 문제에서 제시한 대로 구현하면 된다.
접근법
구름과 플레이어 두 명이 각각 게임을 진행한다. 따라서 우리는 동일한 게임을 2번 실행해야 한다는 것을 알 수 있다.
즉 초기화를 잘하던가, 똑같은 코드를 두 번 실행해야 한다.
게임 보드 칸에는 이동 횟수와 방향이 적혀있으며 게이머가 놓은 위치에서부터 칸의 명령을 따라 쭉 실행하면 된다.
만약 보드를 이탈하는 경우(처음/끝) 반대쪽 첫 칸으로 이동하게 된다(-1 -> length -1
, length -> 0
),
이때 이전에 방문했던 곳에 다시 온다면 게임이 종료된다. 우리는 두 번의 메모 맵이 필요하다.
두 플레이어가 게임을 종료했을 때 점수를 비교해 출력한다.
정리
- 유저의 위치를 받아 점수를 반환하는 함수를 만든다(내부 변수 사용으로 초기화 용이).
- 이동 거리만큼 이동한다.
- 보드 이탈시 좌표를 반대쪽 첫 칸으로 재설정해 준다.
- 이동할 때마다 메모를 한다.
- 점수 값을 비교 출력한다.
최종 코드