시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Back_8911 {
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 NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCase = Integer.parseInt(br.readLine());
StringBuilder sb=new StringBuilder();
String tmp;
for (int tc = 0; tc < testCase; tc++) {
tmp = br.readLine();
maxX=0;
maxY=0;
minX=0;
minY=0;
dir=0;
x=0;
y=0;
for (int i = 0; i < tmp.length(); i++) {
char t=tmp.charAt(i);
if(t=='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(t=='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(t=='L') {
if(dir==0) {
dir=4;
}
dir--;
}else if(t=='R') {
dir++;
if(dir==4) {
dir=0;
}
}
}
int width=maxX-minX;
int height=maxY-minY;
sb.append(width*height+"\n");
}
System.out.println(sb);
}
}
※ 내 생각
이 문제는 시뮬레이션으로 해결하는 문제입니다.
각 케이스 마다 변수에 대한 초기화 작업을 해줍니다.
문자열을 받고 문자열 길이 만큼 for문을 돌려줍니다.
for문에서 각 문자에 대한 명령을 수행합니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_3048 개미(자바) / 문자열 (0) | 2021.11.02 |
---|---|
백준_16916 부분 문자열(자바) / 문자열(KMP) (0) | 2021.10.31 |
백준_16435 스네이크버드(자바) / 그리디 (0) | 2021.10.28 |
백준_4796 캠핑(자바) / 수학 (0) | 2021.10.27 |
백준_1916 최소비용 구하기(자바) / 다익스트라 (0) | 2021.10.26 |