Problem : 새로운 게임 2
유형 : 구현
문재 해석
- 규칙에 맞춰서 말을 움직이고, 게임이 종료되는 턴을 구한다.
- 턴이 1000회를 넘을경우 -1를 출력한다.
문제 재해석
- 단순 구현 문제이다.
해결 전략
- N과 K가 적으므로 시키는 대로 구현을 하면 된다.
- 말 위에 점차 쌓여 가므로, 스택을 이용했다.
- 좌표마다 스택을 두고, 해당 좌표에 어떤 말이 있는지 쌓아 올렸다.
설계, 구현
K번
말의 위치와 방향을 보관 한다.K번
말을 움직일 때,K
위에 무슨 말들이 있는지 확인한다.- 빨간색인 경우 뒤집는다.
reverse
함수를 쓰기 위해 임시로 담는 공간은deque
를 이용했다.
주의할 점
시작하자마자 게임이 끝날 수 있다.- 턴이 진행되던 중에 말이 4개 이상 쌓이는 순간 이라는 조건 떄문인지 위 조건을 처리해주지 않아도 통과함.
- 입력으로 들어오는 좌표는 0이 아니라 1부터 시작이다.
- 명령에 따른 방향 좌표는 시계 방향이 아니다. 재 설정이 필요하다.
- 현재 말의 위치가 빨강이고, 방향 양쪽 다 파란색인 경우가 있을 수 있다.
코드
1 |
|
피드백
- 문제 조건에서 놓친 부분이 많았다. (1부터 시작, 시계 방향이 아님)
- 이로 인해, 구현 방향은 맞았으나, 디버깅에서 시간이 많이 소모되었다.
- 구현하기 전에 완벽히 설계하고, 구현 전에 문제를 한번 더 읽어서 놓친 부분이 있는지 확인하자.