- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 연결리스트
- android studio
- Java
- 프로그래밍 입문
- 자료구조
- 동적할당
- Firebase
- 배열
- 비주얼 베이직
- 구글 로그인
- C++
- firebase google
- 정렬
- 컴퓨터공학과
- 안드로이드
- 백준
- python
- 공유대학
- sql
- 파이썬
- 안드로이드 스튜디오
- 로그인
- 프로그래머스
- oauth
- til
- 코딩테스트
- 알고리즘
- 자바
- C언어
코딩하는 해달이
[백 준 Java] 2527번 직사각형 본문
문제 설명
2차원 격자공간에 두 개의 꼭짓점 좌표로 표현되는 직사각형이 있다. 직사각형은 아래와 같이 왼쪽 아래 꼭짓점 좌표 (x, y)와 오른쪽 위 꼭짓점 좌표 (p, q)로 주어진다.
이 문제에서 모든 직사각형은 두 꼭짓점의 좌표를 나타내는 4개의 정수 x y p q 로 표현된다. 단 항상 x<p, y<q 이다. 예를 들어 위 그림에 제시된 직사각형이라면 아래와 같이 표현된다.
3 2 9 8
두 개의 직사각형은 그 겹치는 부분의 특성에 따라 다음 4가지 경우로 분류될 수 있다.
먼저 두 직사각형의 겹치는 부분이 직사각형인 경우이다. 아래 그림(a)는 공통부분이 직사각형인 경우의 3가지 예를 보여준다,
또는 겹치는 부분이 아래 그림 (b)와 같이 선분이 될 수도 있고, 그림 (c)와 같이 점도 될 수 있다.
마지막으로 아래 그림 (d)와 같이 공통부분 없이 두 직사각형이 완전히 분리된 경우도 있다.
여러분은 두 직사각형의 겹치는 부분이 직사각형인지, 선분인지, 점인지, 아니면 전혀 없는 지를 판별해서 해당되는 코드 문자를 출력해야 한다.
공통부분의 특성 | 코드 문자 |
직사각형 | a |
선분 | b |
점 | c |
공통부분이 없음 | d |
입력
4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사각형의 좌표 값은 1이상 50,000 이하의 정수로 제한된다.
출력
4개의 각 줄에 주어진 두 직사각형의 공통부분을 조사해서 해당하는 코드 문자를 출력파일의 첫 4개의 줄에 각각 차례대로 출력해야 한다.
알고리즘
풀이코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
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 || p2 < x1 || q1 < y2 || q2 < y1) {
sb.append("d\n");
} else if ((x1 == p2 && y1 == q2) || (x1 == p2 && q1 == y2) || (p1 == x2 && q1 == y2) || (p1 == x2 && y1 == q2)) {
sb.append("c\n");
} else if (x1 == p2 || p1 == x2 || y1 == q2 || q1 == y2) {
sb.append("b\n");
} else {
sb.append("a\n");
}
}
System.out.print(sb);
}
}
링크
'개인 공부 > 백준' 카테고리의 다른 글
[백 준 Java] 12852번: 1로 만들기 2 (0) | 2024.09.20 |
---|---|
[백 준 Java] 문제집 (0) | 2024.09.19 |
[백 준 Java] 16953번 A → B (0) | 2024.09.09 |
[백 준 Java] 1541번: 잃어버린 괄호 (1) | 2024.09.06 |
[백 준 Python] 2839번 문제: 설탕 배달 (0) | 2023.07.06 |