https://www.acmicpc.net/problem/8911
8911번: 거북이
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져
www.acmicpc.net
package BOJ.simulation;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_8911 {
private static final char LEFT = 'L';
private static final char RIGHT = 'R';
private static final char FRONT = 'F';
private static final char BACK = 'B';
private static final int[] DY = {-1,0,1,0};
private static final int[] DX = {0,1,0,-1};
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCnt = Integer.parseInt(br.readLine());
for(int t = 0 ; t < testCnt ; t++){
String command = br.readLine();
cal(command);
}
}
private static final int SIZE = 500;
private static void cal(String command) {
int dir = 0;
int y = SIZE;
int x = SIZE;
int minY = SIZE;
int maxY = SIZE;
int minX = SIZE;
int maxX = SIZE;
for(int i = 0 ; i < command.length() ; i++){
char ch = command.charAt(i);
if(FRONT == ch){
y += DY[dir];
x += DX[dir];
}else if(BACK == ch){
y -= DY[dir];
x -= DX[dir];
}else if(LEFT == ch){
dir = (dir+3) % 4;
}else{
dir = (dir+1) % 4;
}
minY = Math.min(minY,y);
minX = Math.min(minX,x);
maxY = Math.max(maxY,y);
maxX = Math.max(maxX,x);
}
System.out.println((maxY-minY) * (maxX - minX));
}
}
'알고리즘' 카테고리의 다른 글
백준 진우의 달 여행 (JAVA) (0) | 2023.02.09 |
---|---|
백준 26215번 눈 치우기 (JAVA) (0) | 2023.02.08 |
백준 25214번 크림 파스타(JAVA) (0) | 2023.02.06 |
백준 15645번 내려가기2(JAVA) (0) | 2023.02.05 |
백준 15992번 1,2,3 더하기 7 (JAVA) (0) | 2023.02.04 |