[백준(Baekjoon)][자바(java)] 1358 : 하키 / 기하 1

728x90

 

https://www.acmicpc.net/problem/1358

 

1358번: 하키

첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부

www.acmicpc.net

 

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

public class Main {
	
	public static double getDistance(int x1, int y1, int x2, int y2) {
		return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
	}

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int w = Integer.parseInt(st.nextToken()),
			h = Integer.parseInt(st.nextToken()),
			x_start = Integer.parseInt(st.nextToken()),
			y_start = Integer.parseInt(st.nextToken()),
			p = Integer.parseInt(st.nextToken());
		int x_end = x_start + w,
			y_end = y_start + h;
		int r = h/2, y_half = y_start + r;
		int x, y, cnt = 0, i;
		for (i = 0; i < p; ++i) {
			st = new StringTokenizer(br.readLine());
			x = Integer.parseInt(st.nextToken());
			y = Integer.parseInt(st.nextToken());
			if ((x_start <= x && x <= x_end && y_start <= y && y <= y_end) || 
				getDistance(x, y, x_start, y_half) <= r || 
				getDistance(x, y, x_end, y_half) <= r)
				cnt++;
		}
		br.close();
		System.out.println(cnt);
	}
}

 

 

반응형