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
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] #1712. 손익분기점 (by JAVA and node.js) (0) | 2022.04.19 |
---|---|
[백준알고리즘] #1330. 두 수 비교하기 (by JAVA and node.js) (0) | 2022.04.19 |
[백준알고리즘] #24736. Football Scoring (by JAVA and node.js) (0) | 2022.04.18 |
[백준알고리즘] #24568. Cupcake Party (by JAVA and node.js) (0) | 2022.04.18 |
[백준알고리즘] #24262. 알고리즘 수업 - 알고리즘의 수행 시간 1 (by JAVA and node.js) (0) | 2022.04.14 |