Problem Solving

[Code Tree - Novice] 방향에 맞춰 이동(dx, dy 테크닉)

Oh Seokjin 2021. 8. 8. 13:35

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 (codetree.ai)

 

📚 문제 확인

  • 이동할 횟수, 방향, 거리가 입력으로 주어진다.
  • 이동을 완료한 후 최종 좌표를 출력

 

📝 입출력 예시

 

🔍 문제 분석

  • 동서남북의 특정 방향으로 이동하는 경우 dx, dy 테크닉을 사용하면 코드가 간결해짐
  • 코드가 간결해지면, 이를 읽는 사람의 이해를 돕고 피로를 덜어줄 수 있음
  • # 동서남북 순
    dx = [1, -1, 0, 0]
    dy = [0, 0, -1, 1]

 

✅ 최종 풀이

  • 어느 방향으로 이동하는지 파악했다면, 이동 거리를 곱하여 좌표값 연산
order = []
step = []

cnt = int(input())

for _ in range(cnt):
    temp1, temp2 = input().split()
    order.append(temp1)
    step.append(int(temp2))

dx = [1, -1, 0, 0]
dy = [0, 0, -1, 1]

x, y = 0, 0
direction = 0

for i in range(cnt):
    if order[i] == "E":
        direction = 0
    elif order[i] == "W":
        direction = 1
    elif order[i] == "S":
        direction = 2
    elif order[i] == "N":
        direction = 3
    
    x += dx[direction] * step[i]
    y += dy[direction] * step[i]

print(x, y)