백준 직사각형

KIMYEONGJUN·2024년 5월 17일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을,
나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사각형의 좌표 값은 1이상 50,000 이하의 정수로 제한된다.
4개의 각 줄에 주어진 두 직사각형의 공통부분을 조사해서 해당하는 코드 문자를 출력파일의 첫 4개의 줄에 각각 차례대로 출력해야 한다.

내가 이 문제를 보고 생각해본 부분

사각형 좌표를 입력받고
겹치지 않는 경우, 꼭짓점 만나는 경우, 변 만나는 경우, 완전히 일치하는 경우 구분하고
각 경우를 위한 조건문 준다. (x, y 좌표 값 이용)
조건에 따라 "d", "c", "b", "a" 출력

코드로 구현

package baekjoon.baekjoon_19;

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

// 백준 2527번 문제
public class Main655 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for(int i = 0; i < 4; i++) {
            StringTokenizer 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 || q1 < y2 || p2 < x1 || q2 < y1) {
                System.out.println("d");
            }
            else if ((x1 == p2 && y1 == q2) || (x1 == p2 && q1 == y2) || (p1 == x2 && q1 == y2) || (p1 == x2 && y1 == q2)) {
                System.out.println("c");
            }
            else if (p1 == x2 || q1 == y2|| p2 == x1 || y1 == q2){
                System.out.println("b");
            }
            else {
                System.out.println("a");
            }
        }

        br.close();
    }
}

마무리

오늘은 기하학문제를 풀어봤는데 내 스스로 느꼈을때 문제가 조금 어렵게 느껴졌다. 그래도 계속 문제를 푸니깐 조금씩 감이 오는것같다.

profile
Junior backend developer

0개의 댓글