上下左右
1381 ワード
1.質問
2.解答
(1)解釈
私が知っているx座標やy座標ではないので、うろうろし始めたばかりです.
n = int(input())
array = list(input().split())
x, y = 1, 1
for i in range(len(array)):
if array[i] == 'R' and y < 5:
y += 1
if array[i] == 'L' and y > 1:
y -= 1
if array[i] == 'U' and x > 1:
x -= 1
if array[i] == 'D' and x < 5:
x += 1
print(x, y)
このように解にも答えがありますが、解はもっと系統的なようなので、解を見て勉強したいです.(2)答え
n = int(input())
x, y = 1, 1
plans = input().split() # plans는 리스트이다.
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
# 1, -1은 한 칸씩 옮기는 것을 의미한다.(방향을 다르게)
move_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인
# 굳이 for plan in len(plan)라고 쓰고 인덱쓰로 접근할 필요가 없었다.
for plan in plans:
# 이동 후 좌표 구하기
for i in range(len(move_types)):
# 이중 for문을 돌면서 어떤 이동 방향을 가졌는지 구한다.
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/@hamham/상하좌우テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol