implementation(simulation):上下左右
問題の定義
旅行家AはNです.× nサイズの正方形空間に立っています.このスペースは1です.× 1サイズの正方形に分割します.
最左上隅座標は(1,1),最右下隅座標は(N,N)である.
旅行家Aは上、下、左、右方向に移動することができ、開始座標は常に(1,1).
私たちの前に旅行家Aが移動を計画する計画書が置いてあります.
計画では、1文字のL、R、U、Dが1行に分かれています.
各文字の意味は次のとおりです.
L:左に1マス移動
R:1マス右に移動
U:1つ上へ移動
D:1マス下に移動
このとき旅行家AはN× Nサイズを超える正方形空間の動きは無視されます.
たとえば、(1、1)の位置でLまたはUに遭遇した場合は無視されます.
以下はN=5の地図と計画です.
入力条件の第1行において、Nは空間の大きさを表す.(1<=N<=100) 第行は、旅行家Aが移動する計画書の内容を示している.(1<=移動回数<=100) しゅつりょくじょうけんの1行目では、選択したカードの数字がゲームルールに従って出力される. I/O例
旅行家AはNです.× nサイズの正方形空間に立っています.このスペースは1です.× 1サイズの正方形に分割します.
最左上隅座標は(1,1),最右下隅座標は(N,N)である.
旅行家Aは上、下、左、右方向に移動することができ、開始座標は常に(1,1).
私たちの前に旅行家Aが移動を計画する計画書が置いてあります.
計画では、1文字のL、R、U、Dが1行に分かれています.
各文字の意味は次のとおりです.
L:左に1マス移動
R:1マス右に移動
U:1つ上へ移動
D:1マス下に移動
このとき旅行家AはN× Nサイズを超える正方形空間の動きは無視されます.
たとえば、(1、1)の位置でLまたはUに遭遇した場合は無視されます.
以下はN=5の地図と計画です.
入力条件
#입력
5
R R R U D D
출력
3 4
私が作ったコードn = int(input())
plans = input().split()
n = 5
plans = ['R','R','R','U','D','D']
curx, cury = 1, 1
for plan in plans:
if plan == "L" and curx > 0 and curx <= n:
curx -= 1
if plan == "R" and curx >= 0 and curx < n:
curx += 1
if plan == "U" and cury > 0 and cury <= n:
cury -= 1
if plan == "D" and cury >= 0 and cury < n:
cury += 1
print(curx, cury)
コードの改良n = int(input())
plans = input().split()
n = 5
plans = ['R','R','R','U','D','D']
curx, cury = 1, 1
# L, R, U, D (좌,우,상,하)에 따른 이동 방향*
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
for plan in plans:
for i in range(len(move_types)):
if plan == move_types[i]:
nx = curx + dx[i]
ny = cury + dy[i]
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
curx, cury = nx, ny
print(curx, cury)
Reference
この問題について(implementation(simulation):上下左右), 我々は、より多くの情報をここで見つけました https://velog.io/@yozzum/asdfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol