문제 링크
풀이
위 그림은 2차원 좌표평면에서 $x$축 방향과 이루는 각도가 $\theta$인 상태에서 $x$만큼 걸어가는 경우이다.
그러면 변위는 다음과 같다.
$$ \begin{aligned} \Delta x &= a \cos \theta\\ \Delta y &= a \sin \theta \end{aligned} $$
따라서, $x$축 방향과 이루는 각도를 누적하면서 변위만큼 갱신하고 처음 위치와의 거리를 구하면 된다.
Java 코드
더보기
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuilder out = new StringBuilder();
final double PI = Math.acos(-1);
int T = Integer.parseInt(in.readLine());
while (T-- > 0) {
int N = Integer.parseInt(in.readLine());
int theta = 0;
double x = 0, y = 0;
while (N-- > 0) {
StringTokenizer st = new StringTokenizer(in.readLine());
String cmd = st.nextToken();
int val = Integer.parseInt(st.nextToken());
switch (cmd) {
case "fd":
x += val * Math.cos(theta * PI / 180);
y += val * Math.sin(theta * PI / 180);
break;
case "bk":
x -= val * Math.cos(theta * PI / 180);
y -= val * Math.sin(theta * PI / 180);
break;
case "lt":
theta += val;
break;
case "rt":
theta -= val;
break;
}
}
out.append(Math.round(Math.sqrt(x * x + y * y)) + "\n");
}
System.out.println(out);
}
}
'PS > boj' 카테고리의 다른 글
[BOJ] 12779 상품 is 뭔들 (0) | 2021.01.24 |
---|---|
[BOJ] 13430 합 구하기 (0) | 2021.01.23 |
[BOJ] 4141 Numbersrebmun (0) | 2021.01.22 |
[BOJ] 5637 가장 긴 단어 (0) | 2021.01.22 |
[BOJ] 4176 Digits (0) | 2021.01.22 |