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);
혹은 . 을 기준으로 정수부와 소수부를 각각 정수형으로 받는 방법도 있다.
'🛡️ 코딩테스트 > 🛡️ 코테 : 알고리즘' 카테고리의 다른 글
최대 증가 부분 수열 (LIS : Longest Increasing Subsequence) (0) | 2025.01.26 |
---|---|
2차원 배열 / 행렬의 90도 회전 (0) | 2025.01.25 |
에라토스테네스의 체 (0) | 2025.01.24 |
투 포인터 알고리즘 (0) | 2025.01.24 |
이분 탐색 (이진 탐색) (0) | 2025.01.18 |