본문 바로가기
알고리즘/SWEA

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

by 컴공맨 2021. 2. 6.
 

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