2025
01.24

 

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

dp문제에서 인풋이 소수점 둘째 자리로 주어진다면 

배열에 담기 위해서 정수형으로 변환해야한다.

이 때 단순히 인풋값을 단순히 x 100 해서 사용하면 틀렸다고 나온다.

 

소수점을 연산해서 0.01 x 100 했더니 정수에 약간 모자르는 0.99999 등의 수가 나올 수 있는 것.

부동소수점 연산의 한계이다.

 

때문에 x100을 곱하고 보정값 ( 주로 0.5f )를 더해줘서 변환하자.  

float temp;
cin >> temp;
int p = (int)((temp * 100) + 0.5f);

 

혹은 . 을 기준으로 정수부와 소수부를 각각 정수형으로 받는 방법도 있다.