늦게 시작해서 한 주 늦게 작성하는 1주차 인증글!!
처음 실력진단을 했을 때는 집중하지 못해서 아쉬운 점수를 받았다..😢
하지만 다시 집중해서 본 결과 697점!!
https://www.codetree.ai/missions/5/problems/move-in-direction
방향에 맞춰 이동
문제
(0, 0)에서 시작하여 총 N번 움직여보려고 합니다. N번에 걸쳐 움직이려는 방향과 움직일 거리가 주어졌을 때, 최종 위치를 출력하는 프로그램을 작성해보세요.
단, dx, dy 테크닉을 활용하여 문제를 해결해주세요.
입력 형식
첫 번째 줄에 정수 N이 주어집니다.
두 번째 줄부터는 N개의 줄에 걸쳐 각 줄마다 이동방향과 이동한 거리가 공백을 사이에 두고 주어집니다. 방향은 W, S, N, E중에 하나이며 각각 서, 남, 북, 동쪽으로 이동함을 의미합니다.
- 1 ≤ N ≤ 100
- 1 ≤ 한 번에 움직이는 거리 ≤ 10
출력 형식
첫 번째 줄에 최종 위치 x, y를 공백을 사이에 두고 출력합니다.
입출력 예제
예제 1
입력:
4
N 3
E 2
S 1
E 2
출력:
4 2
예제 설명
위로 3칸, 오른쪽으로 2칸, 아래로 1칸 이동 후 오른쪽으로 다시 2칸 이동하면 최종 위치는 (4, 2)가 됩니다
제한
시간제한: 1000ms
메모리 제한: 80MB
풀이
각 방향에 대한 x,y 좌표 변화를 미리Dictionary로 저장
입력받은 방향에 해당하는 x, y 좌표 변화에 이동 거리를 곱하여 계산
코드
let direction: [String: (x: Int, y: Int)] = ["N": (0,1), "E": (1,0), "S": (0,-1), "W": (-1,0)]
let n = Int(readLine()!)!
var x = 0, y = 0
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{String($0)}
let distance = Int(input[1])!
x += (direction[input[0]]?.x ?? 0)*distance
y += (direction[input[0]]?.y ?? 0)*distance
}
print("\(x) \(y)")
반응형
'📖 Coding Test > CodeTree' 카테고리의 다른 글
[코드트리 챌린지] 5주차 - HashMap (0) | 2023.10.04 |
---|---|
[코드트리 챌린지] 4주차 - 완전 탐색 (0) | 2023.10.04 |
[코드트리 챌린지] 3주차 - 완전 탐색 (0) | 2023.09.25 |
[코드트리 챌린지] 2주차 - DP (0) | 2023.09.14 |
[코드트리] 코드트리 블로그 챌린지 (0) | 2023.09.12 |
댓글