강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

bunny님의 프로필 이미지
bunny

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2주차 개념 #11. DFS와 BFS 비교

sqrt() 질문

작성

·

146

0

#include <iostream>

#include <cmath>

using namespace std;

long long solution(long long n) {

long long answer = 0;

long long x = sqrt(n);

cout << x << endl;

cout << sqrt(n) << endl;

cout << (int)x << endl;

if (x == (int)x)

{

answer = pow(x + 1, 2);

}

else

{

answer = -1;

}

return answer;

}

int main()

{

long long n;

cin >> n;

solution(n);

return 0;

}

 

프로그래머스 정수 제곱근 판별하는 문제를 풀던 중 질문이 생겨 올립니다.

long long x = sqrt(n)으로 받았을 때

cout << x << endl;

cout << sqrt(n) << endl;

두 결과가 다른 이유를 모르겠습니다.

 

 

 

 

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. ㅎㅎ

sqrt는 기본적으로 double형을 반환합니다.

double sqrt (double x);

이런식으로 함수가 설계가 되어있어요.

그래서 long long으로 할당하면 "정수형"으로 선언한 뒤 출력하는 것이고 그냥 출력하면 double 형으로 출력하게 되서 차이점이 생기는 것입니다.

감사합니다.

bunny님의 프로필 이미지
bunny
질문자

long long 에 대해 잘못 알고 있었네요.

답변해주셔서 감사합니다!

bunny님의 프로필 이미지
bunny

작성한 질문수

질문하기