Algorithm/BOJ
BOJ 2527 직사각형
wow
2021. 3. 8. 20:48
문제 분석
- StringBuilder를 사용하면 오류가 나는 문제다.
- 각 경우(a,b,c,d)에 따라 조건 설정에 유의해야 한다.
문제 풀이
1) 안겹치는 경우
- 직사각형1에 대해 상하좌우 방향 모두 안겹칠 경우를 계산한다.
2) 점으로 겹치는 경우
- 직사각형1에 대해 좌우 방향 중 한 곳이 겹칠 때 상하 방향이 겹쳐야할 경우로 계산한다.
3) 선으로 겹치는 경우
- 점으로 겹치는 경우가 제외되기때문에 4방향 중 아무 곳이나 겹치는 경우를 계산한다.
4) 아예 겹쳐서 직사각형이 생성되는 경우
- else처리해준다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for (int i = 0; i < 4; i++) {
st = new StringTokenizer(br.readLine());
int x1 = Integer.parseInt(st.nextToken());
int y1 = Integer.parseInt(st.nextToken());
int p1 = Integer.parseInt(st.nextToken());
int q1 = Integer.parseInt(st.nextToken());
int x2 = Integer.parseInt(st.nextToken());
int y2 = Integer.parseInt(st.nextToken());
int p2 = Integer.parseInt(st.nextToken());
int q2 = Integer.parseInt(st.nextToken());
if (p1 < x2 || p2 < x1 || q2 < y1 || q1 < y2) { // 안겹치는 경우
System.out.println("d");
} else if ((p1 == x2 || x1 == p2) && (y1 == q2 || y2 == q1)) { // 점으로 겹치는 경우
System.out.println("c");
} else if ((p1 == x2 || x1 == p2) || (y1 == q2 || y2 == q1)) {// 선으로 겹치는 경우
System.out.println("b");
} else {
System.out.println("a");
}
}
}// main
}// class-end