접근법 (생각의 회로)
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())) 해야함
'파이썬 > 이것이 코딩 테스트다 with 파이썬' 카테고리의 다른 글
이코테 Chapter 05 정렬 - 두 배열의 원소 교체 (0) | 2022.02.02 |
---|---|
이코테 Chapter 05 정렬 - 성적이 낮은 순서로 학생 출력하기 (0) | 2022.02.02 |
이코테 Chapter 05 정렬 - 위에서 아래로 (0) | 2022.02.02 |
이코테 Chapter 04 구현 - 왕실의 나이트 (1) | 2022.01.26 |
이코테 Chapter 04 구현 - 시각 (0) | 2022.01.26 |