JAVA Developer Training
47. 8911번 거북이 본문
https://www.acmicpc.net/problem/8911
8911번: 거북이
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져
www.acmicpc.net
import java.io.*;
public class training10 {
// 최대 최소 항상 값을 양수로 유지하기 위함
static int maxX, maxY, minX, minY, dir, x, y;
static int dx[] = { 0, 1, 0, -1 };
static int dy[] = { 1, 0, -1, 0 };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
String move;
// 위치 초기값
for (int i = 0; i < N; i++) {
move = br.readLine();
// 초기값
maxX = 0;
maxY = 0;
minX = 0;
minY = 0;
dir = 0;
// 현재위치
x = 0;
y = 0;
for (int j = 0; j < move.length(); j++) {
char m = move.charAt(j);
// 앞으로 한칸
if (m == 'F') {
x += dx[dir];
y += dy[dir];
maxX = Math.max(x, maxX);
maxY = Math.max(y, maxY);
minX = Math.min(x, minX);
minY = Math.min(y, minY);
}
// 뒤로 한칸
else if (m == 'B') {
x -= dx[dir];
y -= dy[dir];
maxX = Math.max(x, maxX);
maxY = Math.max(y, maxY);
minX = Math.min(x, minX);
minY = Math.min(y, minY);
}
// 방향 좌회전
else if (m == 'L') {
if (dir == 0) {
dir = 3;
} else {
dir--;
}
}
// 방향 우회전
else if (m == 'R') {
if (dir == 3) {
dir = 0;
} else {
dir++;
}
}
}
int XX = maxX - minX;
int YY = maxY - minY;
sb.append(XX * YY + "\n");
}
System.out.println(sb);
}
}
결과
'백준 알고리즘' 카테고리의 다른 글
49. 2178번 미로탐색 (0) | 2022.01.05 |
---|---|
48. 1303번 전쟁-전투 (0) | 2022.01.05 |
46. 1141번 접두사 (0) | 2021.12.31 |
45. 2293번 동전 1 (0) | 2021.12.20 |
44. 1789번 수들의 합 (0) | 2021.12.20 |