Algorithm/문제풀이

[Java][SWEA][D3]11285_다트 게임

Deveun 2021. 1. 11. 00:02

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXZuaLsqz9wDFAST&categoryId=AXZuaLsqz9wDFAST&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

 

문제에서 다트가 꽂힌 좌표 (x, y) 값이 주어져 있으므로,

과녁의 중심(0, 0) 으로 부터 해당 좌표까지의 거리를 구할 수 있다.

 

x2+ y2r (=20, 40, 60, ,,, 200) 의 길이를 비교하면

다트가 꽂힌 위치의 점수 p 를 알아낼 수 있는 간단한 문제이다.

 

 

 

import java.io.*;
import java.util.*;

public class Solution_swe_d3_11285_다트게임 {
	
	public static double[] r = new double[] {Math.pow(20,2), 
			Math.pow(40,2), Math.pow(60,2), Math.pow(80,2),
			Math.pow(100,2), Math.pow(120,2), Math.pow(140,2),
			Math.pow(160,2), Math.pow(180,2), Math.pow(200,2)};
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int tc = Integer.parseInt(br.readLine());
		
		for(int t=1; t <= tc; t ++) {
			int N = Integer.parseInt(br.readLine());
			
			int score = 0;
			for(int i=0; i<N; i++) {
				StringTokenizer st = new StringTokenizer(br.readLine(), " ");
				double x = Double.parseDouble(st.nextToken());
				double y = Double.parseDouble(st.nextToken());
				
				for(int j=0; j<10; j++) {
					if(Math.pow(x, 2) + Math.pow(y, 2) <= r[j]) {
						//System.out.println("score+=" + (10-j));
						score += (10 - j); 
						break;
					}
				}
			}
			System.out.println("#" + t + " " + score);
		}
	}
}