[C++로 풀이] (자료형의 중요성) 멀쩡한 사각형⭐⭐
카테고리: Programmers
태그: Coding Test Algorithm
📌 멀쩡한 사각형
난이도 ⭐⭐
🚀 문제
🚀 내 풀이 ⭕
#include <cmath>
using namespace std;
long long solution(int w, int h) {
long long answer = 1;
long long cantuse = 0;
for (long long i = 1; i <= w; i++)
cantuse += (long long)ceil((long double)h * i / w) - (long long)floor((long double)h * (i - 1) / w);
answer = (long long)w * h - cantuse;
return answer;
}
✈ 자료형의 중요성 : 아주 큰 수의 곱셈과 나눗셈
h
,w
는 1 억 같은 큰 수일 수도 있다.
h / w
나누기를 먼저하면 오차가 더 크다. (h / w * i 로 진행할 경우 오차 大)- 실수(long double)끼리 나누면 소숫점이 어마어마하게 길어져서 그런지.. long double로도 감당 안될 수 있다.
- 이런 상태에서
i
까지 곱해버리면 오차 또한i
만큼 곱해져 더 거대해진다.
h * i
곱하기를 먼저한 후 나누면 오차가 위보다 덜 할 것. (h * i / w 로 진행할 경우)- 사칙연산 순서를 h / w * i 에서 h * i / w 로 변경하니 해결 되었다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기