goliath12   4년 전

알고리즘은 맞는것 같은데 틀려서 https://www.acmicpc.net/board/view/26059 여기에 나온 테스트 케이스 넣었더니 거리가 매우 큰 경우에 값이 0이 나옵니다.

import java.util.Scanner;
public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();

System.out.println(Math.floor((Math.sqrt(8 * n + 1) - 1) / 2));

}}

원인을 찾아보니 위 코드에서 n이 큰 경우 출력값이 NaN가 나옵니다. 왜 이런 값이 나오는건가요?

shg9411   4년 전

int의 범위에 대해 생각해보세요

goliath12   4년 전

계산과정에서 int의 범위를 넘어가서 그랬군요 count와 distance를 long 으로 바꾸니 해결됬습니다. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.