일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 우유가 옆으로 넘어지면 아야
- DFS
- have a nice day
- amazon
- 네트워크
- 아자아자 화이팅
- 코로나 싫어요
- 우유가옆으로넘어지면아야
- I am Korean
- SSAFY IM/A
- SSAFY 테스트
- 자료구조
- 우유아야
- DP
- Java 환경 설정
- 수학
- Have a good day :)
- HAVE A GOOD DAY
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- SeongSeobDang
- Hamming weight
- 모르고리즘
- 자고 싶다
- 텐션 업 10기 화이팅
- 텐션 업 10기!
- SSAFY 10기 화이팅
- Have a nice day.
- BFS
- SSAFY 화이팅
- Today
- Total
Hope Everyone Is Happy
[실버1] 2527. 직사각형 (Java) 본문
https://www.acmicpc.net/problem/2527
2527번: 직사각형
4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사
www.acmicpc.net
화이팅 ★★★★★
※ 문제를 요약하면 아래와 같습니다.
▶ 직사각형 왼쪽 아래 꼭짓점 부분의 (x,y) 좌표와 오른쪽 위 꼭짓점 부분의 (p,q) 좌표로 표현 가능
ex) x=3, y=2 , p=9, q=8 인 직사각형
▶ 위와 같은 좌표로 주어지는 직사각형 2개를 입력 받아 겹치는 부분의 특성에 따라 4가지의 경우로 분류
1. 두 개의 직사각형의 면들이 겹침
2. 두 개의 직사각형이 선분 하나로만 겹치는 경우
3. 두 개의 직사각형이 점 하나로만 겹치는 경우
4. 두 개의 직사각형이 안 겹치는 경우
▶ Input : 4개의 줄로 구성, 각 줄에는 x,y,p,q 좌표가 2번 주어짐
▶ Output : 4개의 줄에 각각 주어진 두개의 직사각형의 관계를 아래와 같이 비교하여 출력
a : 1번 특성, b : 2번 특성, c: 3번 특성, d : 4번 특성
◈ Input
3 10 50 60 100 100 200 300
45 50 600 600 400 450 500 543
11 120 120 230 50 40 60 440
35 56 67 90 67 80 500 600
◈ Output
d
a
a
b
◎ 코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.
▶ 두 직사각형의 가장 왼쪽 X 좌표 중 큰 값에서 가장 오른쪽 X 좌표중 작은 값을 뺐을 때의 결과와
두 직사각형의 가장 밑 Y좌표 중 큰 값에서 가장 위 Y좌표 중 작은 값을 뺐을 때 결과를 통해
두 직사각형의 관계를 파악
: (Max Left X - Min Right X > 0 또는 Max Bot Y - MaxBot Y > 0) : 두 사각형은 만나지 않음
: (Max Left X - Min Right X == 0 또는 Max Bot Y - MaxBot Y == 0) : 두 사각형은 한 점에서 겹침
: (Max Left X - Min Right X < 0 또는 Max Bot Y - MaxBot Y < 0) : 두 사각형은 면에서 겹침
▶ 위 3가지 조건 외에는 선분에서 만나는 걸로 판정
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(System.out));
int x1 = 0, y1 = 0, p1 = 0, q1 = 0;
int x2 = 0, y2 = 0, p2 = 0, q2 = 0;
// 입력 받구~
for(int i = 0; i < 4; i++) {
StringTokenizer st = new StringTokenizer(bReader.readLine());
x1 = Integer.parseInt(st.nextToken());
y1 = Integer.parseInt(st.nextToken());
p1 = Integer.parseInt(st.nextToken());
q1 = Integer.parseInt(st.nextToken());
x2 = Integer.parseInt(st.nextToken());
y2 = Integer.parseInt(st.nextToken());
p2 = Integer.parseInt(st.nextToken());
q2 = Integer.parseInt(st.nextToken());
int nMaxLeftX = x1 > x2 ? x1 : x2;
int nMinRightX = p1 < p2 ? p1 : p2;
int nMaxBottomY = y1 > y2 ? y1 : y2;
int nMinTopY = q1 < q2 ? q1 : q2;
int nXGap = nMaxLeftX - nMinRightX;
int nYGap = nMaxBottomY - nMinTopY;
if(nXGap > 0 || nYGap > 0)
bWriter.write("d");
else if(nXGap == 0 && nYGap == 0)
bWriter.write("c");
else if(nXGap < 0 && nYGap < 0)
bWriter.write("a");
else
bWriter.write("b");
bWriter.write("\n");
}
bWriter.flush();
bWriter.close();
}
}
아침에 갑자기 번뜩여서 풀게 된 문제,,
읽어주셔서 감사합니다!
Good Luck! (피드백 감사합니다!)
'※ 백준 (Baekjoon) > [Java] 문제 풀이 ( Solve the problems)' 카테고리의 다른 글
[실버5] 2941. 크로아티아 알파벳 (Java) (0) | 2023.08.27 |
---|---|
[실버4] 2567. 색종이 - 2 (Java) (0) | 2023.08.24 |
[실버2] 2477. 참외밭 (Java) (0) | 2023.08.22 |
[실버4] 1244. 스위치 켜고 끄기(Java) (0) | 2023.08.21 |
[실버3] 15649. N과 M(2) (Java) (0) | 2023.08.20 |