https://programmers.co.kr/learn/courses/30/lessons/60063
시뮬레이션 문제입니다.
크게 두 가지가 중요합니다.
1. 로봇의 상태를 나타내는 법
로봇의 상태는 현재좌표(Y,X) + 바라보고 있는 방향(Direction)으로 나타낼 수 있습니다.
두 칸을 각 각 HEAD, TAIL이라고 하고 HEAD 기준으로 바라보는 방향으로 TAIL 위치를 구할 수 있습니다.
//int값 X의 의미: X초에 로봇이 (y,x) 좌표에서 dir 방향으로 있었음을 의미
int robotState[DIR][N][N];
2. 매 초 이동하는방법
매 초마다 로봇이 이동할 수 있는 방법은 8가지입니다.
case1. 회전하지 않고 주어진 방향에서 좌우상하로 4방향 이동하는 경우 - 4가지
case2. HEAD을 회전 축으로 좌우 90도로 회전하는 방법 - 2가지
case3. TAIL를 회전 축으로 좌우 90도 회전하는 방법 - 2가지
그래서 매 초 마다 로봇이 위치했던 상태를 저장하면서
8가지 경우의 수로 탐색을 하면 정답을 구할 수 있습니다.
'Algorithm > Programmers' 카테고리의 다른 글
[PRGRMS]81302번: 거리두기 확인하기 (0) | 2022.03.03 |
---|---|
[2020 카카오 기출] 기둥과 보 설치(JAVA) (0) | 2021.07.01 |
[2021 카카오 기출] 카드 짝 맞추기(JAVA) (0) | 2021.06.20 |
[2020 카카오 기출] 가사 검색(JAVA) (0) | 2021.05.24 |
[2018 카카오 기출] 추석 트래픽(JAVA) (0) | 2021.05.14 |