728x90
반응형

백준알고리즘

- Bronze 4 -

 #1297. TV크기 by JAVA and node.js 

 


 

문제

출처: https://www.acmicpc.net/problem/1297 

 


 

접근 방법

피타고라스 정리를 안다면 쉽게 풀 수 있는 문제이다.

대각선 길이 D, 높이 비율 H, 너비 비율 W로 주어지므로, 비율값을 x로 둔다면 D^2 = (H*x)^2 + (W*x)^2가 된다.

D, H, W는 상수이므로 x에 대해 정리하면, x^2 = (D^2) / (H^2 + W^2) 이 되고, 제곱근값을 구하면 x값을 알 수 있다.

제곱근(루트) 값은 Math.sqrt() 함수를 이용해서 구할 수 있다.

x값을 구했다면, H*x가 높이, W*x가 너비이므로 해당 값을 출력하면 된다.

 


 

풀이

▶ JAVA

import java.util.*;

public class Main {
    public static void main(String[] args){
    	Scanner scan = new Scanner(System.in);
        // x값을 소수점 이하까지 제대로 계산하기 위해 double로 받음
    	double d = scan.nextInt();
    	double h = scan.nextInt();
    	double w = scan.nextInt();
    	scan.close();
    	
        // Math.sqrt()를 이용해 x값 계산
    	double x = Math.sqrt((d*d)/(h*h + w*w));
    	
        // 높이와 너비 계산값을 int로 치환
    	int height = (int) (h*x);
    	int width = (int)(w*x);
        
        // 정답 출력
    	System.out.println(height + " " + width);
    }
}

소수점 버림을 하는 Math.floor() 함수를 사용할 수도 있지만, 그렇게 되면 3.0, 5.0과 같이 뒤에 .0이 생긴다.

그래서 간단하게 int로 형변환.

 

▶ node.js

var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

var d = input[0];
var h = input[1];
var w = input[2];

var x = Math.sqrt((d*d)/(h*h + w*w));

console.log(parseInt(h*x) + ' ' + parseInt(w*x));

node.js에서는 parseInt() 함수를 사용했다.


 

결과

 


 

 

 

 

 

End.

heisely's 괴발개발 개발일지

 

728x90
반응형

+ Recent posts