알고리즘/백준저지

백준저지 2527번 직사각형

anott 2021. 8. 25. 23:40

출처: https://www.acmicpc.net/problem/2527

 

2527번: 직사각형

4개의 줄로 이루어져 있다. 각 줄에는  8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직

www.acmicpc.net

 

제출 날짜: 2021년 8월 24일 화요일

 

 

 

생각

경우의 수를 하나씩 따져서 풀었다. 겹치지 않는 경우를 먼저 생각하고, 점만 겹친 경우를 그 다음으로 생각하고, 마지막으로 선분이 겹칠 경우를 따졌다. 그러면 나머지는 무조건 직사각형으로 겹치게 된다.

 

 

 

코드

// 출처: 백준저지 2527번 직사각형 https://www.acmicpc.net/problem/2527

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ2527 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		for (int tc = 0; tc < 4; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int[] rect1X = new int[2]; // 첫번째 직사각형의 x
			int[] rect1Y = new int[2]; // 첫번째 직사각형의 y
			int[] rect2X = new int[2]; // 두번째 직사각형의 x
			int[] rect2Y = new int[2]; // 두번째 직사각형의 y
			for (int i = 0; i < 2; i++) { // x좌표와 y좌표 따로 입력받기
				rect1X[i] = Integer.parseInt(st.nextToken());
				rect1Y[i] = Integer.parseInt(st.nextToken());
			}
			for (int i = 0; i < 2; i++) { // x좌표와 y좌표 따로 입력받기
				rect2X[i] = Integer.parseInt(st.nextToken());
				rect2Y[i] = Integer.parseInt(st.nextToken());
			}

			if ((rect1X[0] > rect2X[1]) || (rect1X[1] < rect2X[0]) || (rect1Y[0] > rect2Y[1])
					|| (rect1Y[1] < rect2Y[0])) {
				// 1. 공통부분이 없음 - d
				// x축 또는 y축이 무조건 작거나 큰 경우
				System.out.println('d');
			} else if ((rect1X[0] == rect2X[1] && rect1Y[0] == rect2Y[1])
					|| (rect1X[1] == rect2X[0] && rect1Y[1] == rect2Y[0])
					|| (rect1X[0] == rect2X[1] && rect1Y[1] == rect2Y[0])
					|| (rect1X[1] == rect2X[0] && rect1Y[0] == rect2Y[1])) {
				// 2. 점 - c
				// 점 1개만 일치할 경우
				System.out.println('c');
			} else if ((rect1X[0] == rect2X[1]) || (rect1X[1] == rect2X[0]) || (rect1Y[0] == rect2Y[1])
					|| (rect1Y[1] == rect2Y[0])) {
				// 3. 선분 - b
				// 아래 또는 위 x축 또는 y축이 각각 위 또는 아래 x축 또는 y축과 겹칠 때
				System.out.println('b');
			} else { // 그외는 겹치는 부분이 존재한다
				// 4. 직사각형 - a
				System.out.println('a');
			}
		}
	}
}