• 문제 링크
8911번: 거북이
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static int[] dx = { -1, 0, 1, 0 };
static int[] dy = { 0, 1, 0, -1 };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
int dir = 0, minY = 0, minX = 0, maxY = 0, maxX = 0, nowY = 0, nowX = 0;
String command = br.readLine();
for (int j = 0; j < command.length(); j++) {
char c = command.charAt(j);
if (c == 'F') {
nowY = nowY + dy[dir];
nowX = nowX + dx[dir];
} else if (c == 'B') {
nowY = nowY - dy[dir];
nowX = nowX - dx[dir];
} else if (c == 'L') {
if (dir == 0)
dir = 3;
else
dir--;
} else if (c == 'R') {
if (dir == 3)
dir = 0;
else
dir++;
}
minY = Math.min(minY, nowY);
minX = Math.min(minX, nowX);
maxY = Math.max(maxY, nowY);
maxX = Math.max(maxX, nowX);
}
sb.append((Math.abs(minY) + Math.abs(maxY)) * (Math.abs(minX) + Math.abs(maxX)) + "\n");
}
bw.write(sb.toString() + "\n");
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 3048 개미 - Implementation / Java (0) | 2022.06.02 |
---|---|
[백준] 10798 세로읽기 - Implementation / Java (0) | 2022.06.01 |
[백준] 2290 LCD Test - Implementation / Java (0) | 2022.05.30 |
[백준] 1436 영화감독 숌 - Brute Force / Java (0) | 2022.05.29 |
[백준] 2798 블랙잭 - Brute Force / Java (0) | 2022.05.28 |
댓글