본문 바로가기

백준

1297 TV크기

문제를 읽고 정리했다. 배운 강정, 이제는 floor 안 쓰고 몫으로 계산하려 하고있다. 

 

그런데 이 문제는 어쩔 수 없이 루트 떄문에 sqrt를 써야한다. 

 

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    double a, b, c, result;
    scanf("%lf %lf %lf", &c, &a, &b);
    //printf("%lf %lf %lf", c, a, b);
    
    result = sqrt(c*c / (a*a + b*b));
    //printf("%lf", result);
    printf("%d %d", a*result/1 , b*result/1);
}

계산을 다 double형으로 할거라 바로 double형으로 받았다. 몰랐는데 double형은 %f로 받으면 안 되고 %lf를 써야한다. 

 

이제는 항상 입력받고 입력 잘 받았는지 확인한다. 왜냐면 값이 이상하게 나올 경우 원인 좀 줄일려구.. 

 

 

이렇게 생각했는데 값이 이상하게 나왔다. 나는 1로 나누면 몫이 나올 줄 알았는데 생각해보니 double형은 그냥 나누기가 된다. 그리고 그걸 %d로 출력하려니 값이 다르게 나온것 같다. 

 

 

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    double a, b, c, result;
    scanf("%lf %lf %lf", &c, &a, &b);
    
    result = sqrt(c*c / (a*a + b*b));
    printf("%d %d", (int)(a*result), (int)(b*result));
}

이렇게 짰다. 그리고 맞았다!

 

'백준' 카테고리의 다른 글

10768 특별한 날  (0) 2019.10.02
16673 고려대에는 공식 와인이 있다  (0) 2019.10.02
2355 시그마  (0) 2019.10.01
10707 수도요금  (0) 2019.10.01
5532 방학 숙제  (0) 2019.09.30