본문 바로가기
알고리즘

[C++]백준 1297번: TV 크기

by Kwoncorin 2020. 5. 26.
728x90

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

 

1297번: TV 크기

첫째 줄에 TV의 대각선 길이, TV의 높이 비율, TV의 너비 비율이 공백 한 칸을 사이에 두고 주어진다. 대각선 길이는 5보다 크거나 같고, 1,000보다 작거나 같은 자연수, 높이 비율은 1보다 크거나 같�

www.acmicpc.net

 

1. 문제 설명

 

TV 대각선의 길이, 높이 비율, 너비 비율이 주어졌을 때 높이의 길이와 너비의 길이를 출력한다.

소수점이 나올 경우에는 그 수보다 작으면서 가장 큰 정수로 출력한다 ex) 1.7 - > 1

 

높이의 길이를 height * x(비율), 너비의 길이를 width*x, 대각선의 길이를 len이라 하면 피타고라스 정리의 의하여

 

(height*x)^2+(width*x)^2=len^2

 

(height^2+width^2)*x^2=len^2

 

x=len/(height^2+width^2)^(1/2)

 

따라서 높이의 길이와 너비의 길이는, 입력받은 높이 비율, 너비 비율 * x를 한 값에서 소수점 아래를 버린 값이기 때문에 계산 결과 앞에 (int)를 붙여 강제로 int로 만들어 소수점을 버려 출력한다.

 

2. 코드

 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int len,height,width;
    
    cin >> len >> height >> width;
    
    cout << (int)(len/sqrt(height*height+width*width)*height) << " " <<(int)(len/sqrt(height*height+width*width)*width)<<"\n";

    return 0;
}
728x90