본문 바로가기

백준

[백준] 27113 잠입 [자바]

 

 


https://upload.acmicpc.net/30f339f9-285f-43ef-bdf1-6da563423866/

 

※. 자율 방법 로봇은 N+M만에 목표 지점에 도달 할 수 있다.

(최 상병은 아래, 오른쪽으로만 이동해야 한다.)

 

※. 레이저가 2개일 때

(1. L L, 2. RR, 3. RL, 4.LR)

(최상병은 녹색구간으로만 통과할 수 있다.)

 


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;


public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		int p_y = 1;
		boolean answer = false;
		for(int i = 0; i < N-1; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			int x = Integer.parseInt(st.nextToken());
			if(x == 1) {
				int miny = 1;
				int maxy = M;
				int c = Integer.parseInt(st.nextToken());
				String d = st.nextToken();
				if(d.equals("L")) {
					maxy = c;
				}
				else {
					miny = c;
				}
				
				if(p_y >= miny && p_y <= maxy) {
					p_y = maxy+1;
				}
				if(p_y > M) answer = true;
			}
			else {
				int miny = 1;
				int maxy = M;
				boolean lr = false;
				int c = Integer.parseInt(st.nextToken());
				String d = st.nextToken();
				int c1 = Integer.parseInt(st.nextToken());
				String d1 = st.nextToken();
				if(d.equals("L") && d1.equals("L")) {
					maxy = c1;
				}
				else if(d.equals("R") && d1.equals("R")) {
					miny = c;
				}
				else if(d.equals("R") && d1.equals("L")) {
					miny = c;
					maxy = c1;
				}
				else {
					lr = true;
					miny = c+1;
					maxy = c1-1;
					if(miny > maxy) answer = true;
				}
				
				if(lr) {
					if(p_y > maxy) answer = true;
					if(p_y < miny) p_y = miny;
					if(p_y > M) answer = true;
				}
				else {
					if(p_y >= miny && p_y <= maxy) {
						p_y = maxy+1;
					}
					if(p_y > M) answer = true;
				}
			}
		}
		if(answer)
			System.out.println("NO");
		else
			System.out.println("YES");
	}
}