티스토리 뷰
✅ 1️⃣ 기본적인 방향 설정
우리가 보통 사용하는 2D 좌표계에서의 방향 이동에 대해 알아보자
2차원 리스트(행렬)에서 이동할 때는 (행, 열)로 움직이게 된다
방향이동 (행 변화, 열 변화)
L (왼쪽) | (0, -1) |
R (오른쪽) | (0, +1) |
U (위쪽) | (-1, 0) |
D (아래쪽) | (+1, 0) |
👉 즉, 이동하면 행(row)과 열(col)이 변화함
# 방향 정의 (L, R, U, D 순서)
dx = [0, 0, -1, 1] # 행 변화량
dy = [-1, 1, 0, 0] # 열 변화량
move_types = ['L', 'R', 'U', 'D']
# 초기 위치 (예: (x, y) = (2, 2)에서 시작)
x, y = 2, 2
# 이동할 명령어 리스트
commands = ['L', 'D', 'D', 'R', 'U'] # 왼쪽 → 아래 → 아래 → 오른쪽 → 위
# 이동 수행
for command in commands:
# 이동 방향 찾기
for i in range(len(move_types)):
if command == move_types[i]: # 명령어와 같은 방향 찾기
nx = x + dx[i]
ny = y + dy[i]
# (예제에 따라 경계 체크)
if 1 <= nx <= 5 and 1 <= ny <= 5: # (5x5 그리드라 가정)
x, y = nx, ny # 이동
print(x, y) # 최종 위치 출력
이코테 구현 문제 4-1
#입력
# 첫째줄에 공간의 크기를 나타내는 N
# A가 이동할 계획서
#도착할 지점
#연산 횟수는 이동 횟수에 비례함
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)
'Python > 코딩테스트' 카테고리의 다른 글
[BOJ/1463] 1로 만들기 / DP (0) | 2025.04.07 |
---|---|
[BOJ/Python] 2110. 공유기 설치 (0) | 2025.03.11 |
코딩테스트 엣지 케이스 - 완전 탐색 (0) | 2025.03.11 |
동적 계획법 (Dynamic Programming, DP) (0) | 2025.03.09 |
[BJ/브론즈] 평균 (0) | 2025.01.26 |