본문 바로가기

파이썬/이것이 코딩 테스트다 with 파이썬

이코테 Chapter 04 구현 - 상하좌우

접근법 (생각의 회로)

1. n을 입력받음

2. 계획서 내용을 리스트로 입력받음

3. 리스트를 for문으로 돌려 조건문을 통해 L이면 y좌표 -1, R이면 +1, U이면 x좌표 -1, D이면 +1

4. 출력

 

소스코드

n = int(input())

x, y = 1, 1

route = input().split()

# for문을 통해 여행계획서에 따른 위치 바꿈
for i in route:
  if i == 'L' and y > 1: # 'L'인 경우  y값이 1보다 커야함
    y -= 1
  elif i == 'R' and y < n: # 'R'인경우 y값이 n을 넘으면 안됨
    y += 1
  elif i == 'U' and x > 1: # 'U'인경우 x값이 1보다 커야함
    x -= 1
  elif i == 'D' and x < n: # 'D'인경우 x값이 n보다 작아야함
    x += 1

print(x, y)

 

 

책 소스코드

# N 입력받기
n = int(input())
x, y = 1, 1
plans = input().split()

# 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)

 

 

오답 노트

책을 보면서 이동하는 문제가 나올때는 따로 dx, dy같은 리스트를 만들어 방향을 정하는 것이 효과적인거 같다..

책에 있는 소스코드마냥 구현하려면 많이 연습해야될거같다.

 

배운 것

문자열은 route = input().split()처럼 바로 리스트로 만들어 저장할 수 있음

숫자는 route = list(map(int, input().split())) 해야함