上下左右


-質問


旅行家AはN Nの大きさの正方形の空間に立っている.この空間は1つの大きさの正方形に分かれている.一番左上の座標は(1,1)、一番右下の座標は(N,N)です.旅行家Aは上、下、左、右方向に移動することができ、開始座標は常に(1,1).旅行家Aは移動を計画する計画書があり、L,R,U,Dのアルファベットが繰り返し書かれている.
L:左に1マス移動
R:1マス右に移動
U:1つ上へ移動
D:1マス下に移動
このとき、旅行者AがN*Nサイズの正方形空間から離れる動作は無視される.例えば、(1,1)の位置でLまたはUに遭遇した場合に無視される.
計画書があるときは、旅行者Aが最終的に到着した場所の座標を出力するプログラムを作成します.
次の図は、入力例に従って、旅行者の移動位置を示しています.

-入力条件


最初の行には空間サイズを表すNがあります.
2行目は旅行家Aが移動する計画書の内容を示した.

-出力条件


1行目は、旅行者Aの最終到着点の座標(X,Y)をスペースで区切って出力する

-入力例


5
R R R U D D

-出力例


3 4

-問題を解く


実装アルゴリズムを用いると,この問題は容易に解決できる.実装アルゴリズムとは,簡単に言えば,頭の中のアルゴリズムをコードに変換する過程である.フレームワークのあるアルゴリズムというより,問題を解決するために必要なアルゴリズムがコードでどのように実現されるべきかというアルゴリズムであると考えられる.実際には,実装を中心とした問題が符号化テストによく現れる.実装の問題が頻繁に発生するのは、実装の問題では解決策が容易に見つかるが、コードに移行することが困難であるためである.
与えられた問題は,現在位置からどの方向に移動するかを判断した後,現在座標に値を1つ加えればよい.
プロセスを順番にリストします.
1.正方形のサイズと移動計画を入力
2.繰り返し文を使用して、移動計画に従って座標値を変更する
3.移動計画が指定したスペースから離れる場合は無視
4.最終到達地の座標を出力
n = int(input())
plans = input().split()
x, y = 1, 1

dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
move_types = ['R', 'L', 'U', 'D']

for plan in plans:
    for i in range(len(move_types)):
        if plan == move_types[i]:
            nx = x + dx[i]
            ny = y + dy[i]
            
    if nx < 1 or ny < 1 or nx > n or ny > n:
        continue
        
    x, y = nx, ny

print(x, y)
出典:これは就職のためのコードテストで、Python、羅東彬知音で