anott
기록
anott
  • 분류 전체보기
    • 오라클
    • SQL
    • 알고리즘
      • 백준저지
      • 프로그래머스
      • SWEA
    • 개발 관련
    • 프론트엔드
      • TypeScript, Next.js
      • React 공식문서 읽기
hELLO · Designed By 정상우.
anott
알고리즘/백준저지

백준저지 2527번 직사각형

백준저지 2527번 직사각형
알고리즘/백준저지

백준저지 2527번 직사각형

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');
			}
		}
	}
}

 

 

저작자표시 비영리 (새창열림)

'알고리즘 > 백준저지' 카테고리의 다른 글

백준저지 2309번 일곱 난쟁이  (0) 2021.08.27
백준저지 2116번 주사위 쌓기  (0) 2021.08.26
백준저지 2628번 종이자르기  (0) 2021.08.24
백준저지 14696번 딱지놀이  (0) 2021.08.23
백준저지 13300번 반 배정  (0) 2021.08.21
    '알고리즘/백준저지' 카테고리의 다른 글
    • 백준저지 2309번 일곱 난쟁이
    • 백준저지 2116번 주사위 쌓기
    • 백준저지 2628번 종이자르기
    • 백준저지 14696번 딱지놀이
    anott
    anott

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.