Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 움직임 후 로봇의 위치


이 문제에서 우리는 네 방향으로 움직이지만 한 번만 움직이는 로봇이 주어집니다. 방향은 위('U'), 아래('D'), 왼쪽('L'), 오른쪽('R')입니다. 그리고 숫자 방향의 이니셜을 포함하는 문자열이 제공됩니다. 우리의 작업은 로봇의 초기 위치가 (0,0)인 경우 로봇의 최종 위치를 인쇄하는 것입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력 - 입력:'LDRRUL'

출력 - (0, 0)

설명 -

L (left) : (0,0) -> (-1,0)
D (down) : (-1,0) -> (-1, -1)
R (right) : (-1, -1) -> (0, -1)
R (right) : (0, -1) -> (1, -1)
U(up) : (1, -1) -> (1, 0)
L(left) : (1, 0) -> (0, 0)

이 문제를 해결하기 위해 x축과 y축 방향의 총 이동 수를 계산합니다. x 좌표의 경우 오른쪽 이동 횟수를 늘리고 왼쪽 이동 횟수를 줄입니다. y 좌표의 경우 위쪽 이동 횟수를 늘리고 왼쪽 이동 횟수를 늘립니다.

예시

솔루션 구현을 보여주는 프로그램

#include <iostream>
#include <string.h>
using namespace std;
void robotMoved(string move) {
   int xAxis, yAxis;
   int l=move.size();
   for (int i = 0; i < l; i++) {
      if (move[i]=='U')
         yAxis++;
      else if (move[i]=='D')
         yAxis--;
      else if (move[i]=='L')
         xAxis--;
      else if (move[i]=='R')
         xAxis++;
   }
   cout<<"Final Position of the robot is : ("<<xAxis<<", "<<yAxis<<")"<<endl;
}
int main() {
   string move="URLLDDRRUDUDDRU";
   robotMoved(move);
   return 0;
}

출력

Final Position of the robot is : (32744, -274873553)