floating point error 때문에 22번째 줄과 같이 비교하는 것은 매우 위험합니다.
그래서 정확한 비교 연산을 하기 위해서는 integer 변수로 하는 것이 좋습니다.
int sqrt = Math.pow(i, 0.5) + 0.5;
if sqrt*sqrt == i then ..
1977번 - 완전제곱수
1부터 100까지 넣고 디버그 돌리면서 봤을 때는 에러가 없는 줄 알았는데 정말 원인이 부동소수점 오류였네요...
앞으로 조심해야겠습니다 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
lightseller 7년 전
문제에서 m이 n보다 작다고 했으니 for문에는 m to n으로 들어가야 하겠고
sqrt % 1로 소수점 자리 유무 판별도 되는 걸 확인했는데 통과를 못 하네요...