
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");
}
}
'백준' 카테고리의 다른 글
[백준] 27115 통신소 [자바] (0) | 2023.01.15 |
---|---|
[백준] 27114 조교의 맹연습 [자바] (0) | 2023.01.12 |
[백준] 27112 시간 외 근무 멈춰! [자바] (0) | 2023.01.11 |
[백준] 26071 오락실에 간 총총이 [자바] (0) | 2022.12.03 |
[백준] 1647 도시 분할 계획 [자바] (0) | 2022.10.12 |