지난번 보다 떨어진 이번 실력 체크...ㅜㅜ 다음에 더 열심히 해야겠다.,...
https://www.codetree.ai/cote/14/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
풀이
W,E,N,S 순서로 dx, dy 배열을 선언한다. 각 입력을 switch 문을 사용해서 case에 맞게 x,y 좌표를 계산한다.
코드
let n = Int(readLine()!)!
let dx = [-1,1,0,0], dy = [0,0,1,-1]
var x = 0, y = 0
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{String($0)}
switch input[0] {
case "W":
x += dx[0]*Int(input[1])!
y += dy[0]*Int(input[1])!
case "E":
x += dx[1]*Int(input[1])!
y += dy[1]*Int(input[1])!
case "N":
x += dx[2]*Int(input[1])!
y += dy[2]*Int(input[1])!
case "S":
x += dx[3]*Int(input[1])!
y += dy[3]*Int(input[1])!
default:
break
}
}
print("\(x) \(y)")
반응형
'📖 Coding Test > CodeTree' 카테고리의 다른 글
[코드트리 챌린지] 5주차 - HashMap (0) | 2023.10.04 |
---|---|
[코드트리 챌린지] 4주차 - 완전 탐색 (0) | 2023.10.04 |
[코드트리 챌린지] 3주차 - 완전 탐색 (0) | 2023.09.25 |
[코드트리 챌린지] 1주차 - 프로그래밍 연습 (0) | 2023.09.14 |
[코드트리 챌린지] 2주차 - DP (0) | 2023.09.14 |
댓글