Algorithm/백준 알고리즘

백준_8911 거북이(자바) / 시뮬레이션

미스터로즈 2021. 10. 29. 09:17

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

 

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문에서 각 문자에 대한 명령을 수행합니다.