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: