변수
- N : 입력받는 수 / move (list) : 입력받는이동
- x y : 자리의 수
- X Y (list) : 이동하는 수
상 하 좌 우
X -1 1 0 0
Y 0 0 -1 1
- List_move (list) : 상하좌우
- i : 리스트의 인덱스
로직
- N과 상하좌우 리스트를 입력받는다
- 입력받은 만큼 for문을 돈다 (N)
- 상하좌우 를 for문을 돌면서
- in = 인덱스
- x, y += X Y [i] 해준다
코드
- 이렇게 풀었더니 효율적이지 못한 코드라는 생각이 들었다
-> 왜 N+1 까지 돌아야하는지
-> xy 아래 들어간 if문을 하나로 만들 수 없을까?
N = int(input())
move = list(input().split())
X = [-1,1,0,0]
Y = [0,0,-1,1]
List_move = ['U','D','L','R']
x = 1
y = 1
for i in range (0,N+1) :
for j in range (0,4) :
if (move[i]==(List_move[j])) :
x += X[j]
if x<1 :
x = 1
elif x>N :
x = N
y += Y[j]
if y<1 :
y=1
elif y>N :
y=N
print(x,y)
#if (x<0 or y<0 or x>N or y>N):
# continue
print(x,y)
다시 푼 코드
- 이동횟수는 N+1이었다
예) N=5인 경우 , 이동횟수=6
‘’’
변수
0. n : 입력받는 정수
List = [] : n개만큼 입력받는 이동 수
1. x : 행 y : 열 (시작은 모두 1)
2. L R U D
X = [0,0,-1,1]
Y = [-1,1,0,0]
로직
1. 수 / 이동경로 를 입력받고
2. for i : n
3. for next : Next
4. if i == list :
4-2 . if x+=X[i] <-1 || > N :
x == x
y == y
else :
x += X[i]
y += Y[i]
'''
x = 1
y = 1
Next = ['L','R','U','D']
X = [0,0,-1,1]
Y = [-1,1,0,0]
n = int(input())
List = input().split()
for i in range (0,n+1) :
for next in Next :
a = Next.index(next)
if List[i]==next :
if (x+X[a] < 1 or x+X[a]> n) :
x == x
y == y
else :
x += X[a]
y += Y[a]
print(x,y)
2024/01/15 다시 푼 코드
# 구현 : 상하좌우
# N , 리스트 입력받기
# (1,1)에서 시작 L,R,U,D 만큼 이동 (리스트 크기 만큼)
# 이동한 좌표가 N보다 크면 그 이동은 무시
# 1. N, 리스트 입력받기
# 2. L,R,U,D 를 이중 리스트로 만들기
# 3. 입력받은 리스트 크기만큼 L,R,U,D 인경우 x,y에 +=1 해주기
# - 이때 x,y가 N보다 커지면 해당 움직임은 무시
N = int(input())
move = input().split()
x=1
y=1
move_type = ['L', 'R', 'U', 'D']
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
for i in move :
if i == move_type[0]:
if x == 1:
continue
else:
x += dx[0]
y += dy[0]
elif i== move_type[1]:
if x == N:
continue
else:
x += dx[1]
y += dy[1]
elif i==move_type[2]:
if y ==1:
continue
else:
x += dx[2]
y += dy[2]
elif i==move_type[3]:
if y == N:
continue
else:
x += dx[3]
y += dy[3]
print(x,y)