Official
B - Go Straight and Turn Right Editorial by leaf1415
本問題に正解するには、高橋君の行動を実際にシミュレーションするプログラムを作成すれば良いです。
具体的には、与えられた文字列 \(T\) を先頭から走査し、各文字が S
であるか R
であるかに応じて移動または向きの変更を行います。その後、最終的な高橋君の位置を出力します。
文字列 \(T\) を先頭から走査するには、プログラミング言語の標準的な機能である繰り返しの機能( for 文など)を用いることができます。 \(T\) を走査する過程で、高橋君の位置 \((x, y)\) と向き \(d\) (東/南/西/北)を変数として保持し、移動や向きの変更の際にそれらを適切に変更していきます。
C++ 言語による本問題の正解例を以下に記載します。
#include <iostream>
using namespace std;
int main(void)
{
int n;
string s;
cin >> n >> s;
int x = 0, y = 0, d = 0;
for(int i = 0; i < n; i++){
if(s[i] == 'S'){
if(d == 0) x++;
if(d == 1) y--;
if(d == 2) x--;
if(d == 3) y++;
}
if(s[i] == 'R') d = (d+1) % 4;
}
cout << x << " " << y << endl;
return 0;
}
posted:
last update: