4주차 · 완전탐색과 시뮬레이션
어려움시뮬레이션구현

로봇 시뮬레이션

로봇이 좌표 (0, 0)에서 북쪽을 보고 서 있어요. 명령 문자열 commands가 주어지며, 각 문자는 다음을 뜻해요.

G 는 바라보는 방향으로 한 칸 전진, L 은 제자리에서 왼쪽으로 90도 회전, R 은 오른쪽으로 90도 회전이에요.

모든 명령을 실행한 뒤의 위치를 [x, y] 로 반환해요. 북쪽은 y가 늘어나는 방향, 동쪽은 x가 늘어나는 방향이에요.

위치만 답하면 되지만 방향을 정확히 들고 있어야 위치가 맞아요. 회전을 잘못 구현하면 몇 걸음 뒤부터 어긋나요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 1 ≤ commands.length ≤ 10,000
  • commands 는 `G`, `L`, `R` 로만 이루어져요.
방향을 델타 배열로 들고 인덱스만 돌려요. [[0, 1], [1, 0], [0, -1], [-1, 0]] 을 북·동·남·서 순으로 두면 우회전은 +1, 좌회전은 +3 (또는 -1) 이고, 둘 다 % 4 로 감싸요. 좌회전을 -1 로 쓸 때 자바스크립트의 % 는 음수를 그대로 두니 (d + 3) % 4 가 안전해요.
javascript
function robotSimulation(commands) {
const delta = [[0, 1], [1, 0], [0, -1], [-1, 0]];
let dir = 0;
let x = 0;
let y = 0;
for (const c of commands) {
if (c === "R") dir = (dir + 1) % 4;
else if (c === "L") dir = (dir + 3) % 4;
else {
x += delta[dir][0];
y += delta[dir][1];
}
}
return [x, y];
}
이전 문제행렬 90도 회전
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.