구현 : 상하좌우

주리·2022년 10월 26일
0

코테_구현

목록 보기
1/4
post-thumbnail

변수

  1. N : 입력받는 수 / move (list) : 입력받는이동
  2. x y : 자리의 수
  3. X Y (list) : 이동하는 수
    상 하 좌 우
    X -1 1 0 0
    Y 0 0 -1 1
  4. List_move (list) : 상하좌우
  5. i : 리스트의 인덱스

로직

  1. N과 상하좌우 리스트를 입력받는다
  2. 입력받은 만큼 for문을 돈다 (N)
  3. 상하좌우 를 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)
profile
완벽한 글 보다, 그 과정들을 기록하는 개발자

0개의 댓글