백준 8911 - 거북이

백준 8911 - 거북이

https://www.acmicpc.net/problem/8911

★ 풀이

좌표 상의 거북이를 움직이는 것은 현재 바라보고 있는 방향으로 움직여야 한다. dir라는 변수를 통해 방향을 표현했고, dir에 따라서 움직일 수 있는 4가지 방향을 dx[],dy[]를 통해 구현했다. 초기에 구상은

이동 명령어

F

x = x + dx[dir], y = y + dy[dir];

B

x = x - dx[dir], y = y - dy[dir];

방향 전환 명령어

L

dir--;

R

dir++;

위와 같이 구상했고, 방향 전환시에 범위(0,1,2,3)를 넘어가는 값은 삼항 연산자와 %를 통해 알맞은 값으로 조정했다.

처음 구상은 이렇게 했다...

매번 좌표를 움직일 때(F,B) 좌표의 최대값, 최소값을 갱신 시키고 마지막에 아래와 같이 구해주면 된다.

★ 소스 코드

import java.io.*; import java.util.*; // 좋은 코드 흡수하기! public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 북 동 남 서 static int dx[] = {-1,0,1,0}; static int dy[] = {0,1,0,-1}; static int dir; public static void main(String[] args) throws IOException { int T = Integer.parseInt(br.readLine()); while(T-- > 0) { dir = 0; int maxX = 0; int maxY = 0; int minX = 0; int minY = 0; int x = 0; int y = 0; String cmd = br.readLine(); // (가장 큰 y - 가장 작은 y) * (가장 큰 x - 가장 작은 x) for(int i = 0; i

"); } bw.flush(); } }

from http://sweet-smell.tistory.com/79 by ccl(A) rewrite - 2021-11-14 04:01:45