[イコール]体現-上下左右
5641 ワード
質問する
旅行家AはN×Nサイズの正方形空間に立っている.この空間は1×1の大きさの正方形に分かれている.最左上隅座標は(1,1),最右下隅座標は(N,N)である.旅行家Aは上、下、左、右方向に移動することができ、開始座標は常に(1,1).私たちの前に旅行家Aが移動を計画する計画書が置いてあります.
計画書には1行のスペースを基準に、L、R、U、Dの1文字が繰り返し書かれています.各字の意味は以下の通りです.
この場合、6つのコマンドに従って、旅行者が移動する位置は、(1,2)、(1,3)、(1,4)、(2,4)、(3,4)の順であるため、最終的に旅行者Aが到着する場所の座標は(3,4)である.つまり、3行4列目の位置に相当するので(3,4)と書きます.計画書を作成する場合は、旅行者Aが最終的に到着した場所の座標を出力するプログラムを作成してください.
入力条件
5
R R R U D D
出力例
3 4
私の答え
この問題はできなかった...🪓💩🪓 2 Dリストで座標を入れたかったのですが実現せず、与えられた草が時間を超えていました.解きほぐすまで掴みたかったのですが、アイデアを思いついて実行に移し、30分を超えると諦め、解きほぐす感覚を見ながら勉強したほうがいいので、おとなしくやめましょう!(適当に諦めることを覚えた…)答えの例を一つ一つ復習します.
回答例
# N을 입력받기
n = int(input())
x, y = 1, 1
plans = input().split()
# 이동된 좌표 저장
nx = 0
ny = 0
# 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 = 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)
Reference
この問題について([イコール]体現-上下左右), 我々は、より多くの情報をここで見つけました https://velog.io/@leedawnn/이코테-구현-상하좌우テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol