알고리즘/SWEA

[Java] SWEA 6853번 직사각형과 점

컴공맨 2021. 2. 6. 14:53
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이

직사각형의 안에있는 경우와 밖에있는 경우는 조건이 쉬우므로 if와 else if로 조건을 처리하였고 직사각형의 네 변 중 적어도 하나의 위에 있는 경우는 조건이 까다롭지만 문제에서 조건은 딱 3종류 이므로 else에 두어서 까다로운 조건을 그냥 받도록하여 해결하였습니다.


코드

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

public class Solution {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		
		int T = Integer.parseInt(br.readLine());
		for (int tc = 1; tc <= T; ++tc) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int X1 = Integer.parseInt(st.nextToken());
			int Y1 = Integer.parseInt(st.nextToken());
			int X2 = Integer.parseInt(st.nextToken());
			int Y2 = Integer.parseInt(st.nextToken());
			
			int N = Integer.parseInt(br.readLine());
			
			int inCnt = 0;
			int outCnt = 0;
			int lineCnt = 0;
			for (int i = 0; i < N; ++i) {
				st = new StringTokenizer(br.readLine());
				
				int x = Integer.parseInt(st.nextToken());
				int y = Integer.parseInt(st.nextToken());
				
				if (x < X1 || x > X2 || y < Y1 || y > Y2) {
					outCnt++;
				}
				else if ((x > X1 && x < X2) && (y > Y1 && y < Y2)) {
					inCnt++;
				}
				else {
					// 줄위 입력은 조건이 생각보다 까다로우므로
					// 직접 쓸필요없이 마지막 else로 빼내면 된다!
					lineCnt++;
				}
			}
			
			sb.append("#").append(tc).append(" ");
			sb.append(inCnt).append(" ").append(lineCnt).append(" ").append(outCnt);
			System.out.println(sb);
			sb.setLength(0);
		}
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com