으하하 공부일기
[SWEA] - 6853. 직사각형과 점 (D3) 본문
[문제]
직사각형과 점들이 있다. 각 점들이 다음 중 어떤 상태에 있는지 판별하여,
각각의 상태인 점이 몇 개씩 있는지 구하는 프로그램을 작성하라.
1. 점이 완전히 직사각형 내부에 있다.
2. 점이 직사각형의 네 변 중 적어도 하나의 위에 있다.
3. 점이 완전히 직사각형 외부에 있다.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 네 정수 X1, Y1, X2, Y2 ( -104 ≤ X1 < X2 ≤ 104, -104 ≤ Y1 < Y2 ≤ 104 )가 공백 하나로 구분되어 주어진다.
이는 직사각형이 xy평면 위의 네 점 ( X1, Y1 ), ( X1, Y2 ), ( X2, Y2 ), ( X2, Y1 )으로 이루어진 직사각형이라는 뜻이다.
두 번째 줄에는 점의 개수를 나타내는 하나의 정수 N ( 1 ≤ N ≤ 104 ) 이 주어진다.
다음 N개의 줄의 각 줄에는 두 정수 x, y ( -104 ≤ x,y ≤ 104 ) 가 공백 하나로 구분되어 주어진다.
이는 xy평면 위의 점 ( x, y )에 점이 하나 있다는 의미이다.
[출력]
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고 한 칸을 띄운 후,
세 정수를 공백 하나로 구분하여 출력한다.
첫 번째 정수는 완전히 직사각형 내부에 있는 점의 개수, 두 번째 정수는 직사각형의 네 변 중 적어도 하나의 위에 있는 점의 개수,
세 번째 정수는 완전히 직사각형 외부에 있는 점의 개수여야 한다
문제 풀기
6853. 직사각형과 점
[풀이]
import java.util.Scanner;
class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int tc=1; tc<=t; tc++) {
int x1 = sc.nextInt();
int y1 = sc.nextInt();
int x2 = sc.nextInt();
int y2 = sc.nextInt();
int n = sc.nextInt();
int in = 0;
int on = 0;
int out = 0;
for(int i=0; i<n; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
if(x < x1 || x > x2 || y < y1 || y > y2)
out++;
else if((x > x1 && x < x2) && (y > y1 && y < y2))
in++;
else
on ++;
}
System.out.format("#%d %d %d %d\n", tc, in, on, out);
}
}
}
'SWEA > D3' 카테고리의 다른 글
[SWEA] - 6913.6958. 동철이의 프로그래밍 대회 (D3) (0) | 2022.05.13 |
---|---|
[SWEA] - 6900. 주혁이의 복권 당첨 (D3) (0) | 2022.05.13 |
[SWEA] - 6808. 규영이와 인영이의 카드게임 (D3) (0) | 2022.05.13 |
[SWEA] - 6781. 삼삼 트리플 게임 (D3) (0) | 2022.05.13 |
[SWEA] - 6730. 장애물 경주 난이도 (D3) (0) | 2022.05.13 |