728x90
반응형
2024.09.09기준 - 브론즈1
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 체스에서 비숍이 갈 수 있는 위치인지 확인하는 문제입니다.
체스에서 비숍은 대각선이면 어디든지 갈 수 있기 때문에, 체스판의 크기가 세로나 가로 중 1칸이 아니라면 해당하는 조건에는 무조건 갈 수 있습니다.
- 체스판의 크기가 둘 중에 하나가 1이라면 도착과 시작의 위치가 같아야합니다.
- 시작위치의 y좌표 짝수, x좌표 홀수
- 도착위치 y좌표 짝수, x좌표 홀수
- 도착위치 y좌표 홀수, y좌표 짝수
- 시작위치의 y좌표 훌수, x좌표 짝수
- 도착위치 y좌표 짝수, x좌표 홀수
- 도착위치 y좌표 홀수, x좌표 짝수
- 시작위치 y좌표 홀수, x좌표 홀수
- 도착위치 y좌표 짝수, x좌표 짝수
- 도착위치 y좌표 홀수, x좌표 홀수
1. 위에 조건으로 n과 m중 1이 있다면 조건문을 세워줍니다.
if ((n == 1 || m == 1)) {
if (startx == endx && starty == endy) {
sb.append("YES");
} else {
sb.append("NO");
}
}
2. 그 외에는 짝수와 홀수를 구분하여 조건문을 세워줍니다.
else if (sbx != sby && ebx != eby) {
sb.append("YES");
} else if (sbx == sby && ebx == eby) {
sb.append("YES");
} else {
sb.append("NO");
}
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // 체스판의 가로
int m = Integer.parseInt(st.nextToken()); // 체스판의 세로
// 위치는 짝수라면 true 홀수라면 false로 설정
st = new StringTokenizer(br.readLine());
int startx = Integer.parseInt(st.nextToken());
int starty = Integer.parseInt(st.nextToken());
boolean sbx = startx % 2 == 0 ? true : false;
boolean sby = starty % 2 == 0 ? true : false;
st = new StringTokenizer(br.readLine());
int endx = Integer.parseInt(st.nextToken());
int endy = Integer.parseInt(st.nextToken());
boolean ebx = endx % 2 == 0 ? true : false;
boolean eby = endy % 2 == 0 ? true : false;
// 체스판의 크기가 둘 중에 하나가 1이라면
// 도착과 시작의 위치가 같아야한다.
//
// 시작위치의 y좌표 짝수, x좌표 짝수
// 1. 도착위치 y좌표 짝수, x좌표 짝수
// 2. 도착위치 y좌표 홀수, x좌표 홀수
//
// 시작위치의 y좌표 짝수, x좌표 홀수
// 1. 도착위치 y좌표 짝수, x좌표 홀수
// 2. 도착위치 y좌표 홀수, y좌표 짝수
//
// 시작위치의 y좌표 훌수, x좌표 짝수
// 1. 도착위치 y좌표 짝수, x좌표 홀수
// 2. 도착위치 y좌표 홀수, x좌표 짝수
//
// 시작위치 y좌표 홀수, x좌표 홀수
// 1. 도착위치 y좌표 짝수, x좌표 짝수
// 2. 도착위치 y좌표 홀수, x좌표 홀수
if ((n == 1 || m == 1)) {
if (startx == endx && starty == endy) {
sb.append("YES");
} else {
sb.append("NO");
}
} else if (sbx != sby && ebx != eby) {
sb.append("YES");
} else if (sbx == sby && ebx == eby) {
sb.append("YES");
} else {
sb.append("NO");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 27952번 보디빌딩 (0) | 2024.09.11 |
---|---|
BEAKJOON / 백준 - JAVA 25593번 근무 지옥에 빠진 푸앙이 (Small) (0) | 2024.09.10 |
BEAKJOON / 백준 - JAVA 2448번 별 찍기 - 11 (1) | 2024.09.08 |
BEAKJOON / 백준 - JAVA 2096번 내려가기 (0) | 2024.09.07 |
BEAKJOON / 백준 - JAVA 1916번 최소비용 구하기 (0) | 2024.09.06 |