728x90
13567번: 로봇
입력은 표준 입력으로부터 받는다. 첫 줄에는 두 정수 M과 n (1 ≤ M ≤ 1,000, 1 ≤ n ≤ 1,000)이 주어진다. M은 정사각형 S의 한 변의 길이, 즉 오른쪽 맨 위의 좌표는 (M, M)이 된다. n은 로봇이 수행할
www.acmicpc.net
package Implementation;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class robot {
static int M,N;
static int[]dx = {1,0,-1,0}; //동서남북
static int[]dy = {0,-1,0,1};
// static int[][]map;
// static boolean[][][]visited;
public static boolean canGo(int x, int y, int n)
{
return x >= 0 && y >= 0 && x < n && y < n ;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
M = Integer.parseInt(st.nextToken());
N = Integer.parseInt(st.nextToken());
int dir=0;
int x =0; int y =0;
for(int i=0; i<N; i++){
String order;
int num;
StringTokenizer stoken = new StringTokenizer(br.readLine());
order = stoken.nextToken();
num = Integer.parseInt(stoken.nextToken());
int nx,ny;
if(order.equals( "MOVE")){
nx = x+dx[dir]*num;
ny = y+dy[dir]*num;
if(canGo(nx,ny,M)){x=nx; y=ny;}
else{
System.out.println(-1);
return;
}
}
else if(order.equals("TURN")){
if(num==0){ //왼쪽으로 90도 회전
dir = (dir+4-1)%4;
}
else{ //오른쪽으로 90도회전
dir = (dir+1)%4;
}
}
}
System.out.println(x+" "+y);
}
}