[TIL #13] 정수 제곱근 판별

2024. 7. 3. 16:53·Camp/T.I.L.

임의의 양의 정수 $n$에 대해, $n$이 어떤 양의 정수 $x$의 제곱인지 아닌지 판단하려 한다.
$n$이 양의 정수 $x$의 제곱이라면 $x+1$의 제곱을 리턴하고, $n$이 양의 정수 $x$의 제곱이 아니라면 -1을 리턴하는 함수를 완성하라.

 

내가 풀어나간 방법

1. 제곱근 구하기

먼저 제곱근을 구하고 그걸 정수 형태로 만들어야 한다.

sqrt()는 정수형만 반환하는 것이 아니기 때문에 round()를 통해 반올림해서 정수 형태로 만든다.

double sqrtResult = std::sqrt(n);
long long intSqrtResult = static_cast<long long>(std::round(sqrtResult));

 

2. 조건에 맞는지 검증

여기서 intSqrtResult를 제곱하여 입력받은 수 n이 나오면,

그 수에 1을 더하고 그 수를 제곱한 값을 리턴한다.

만약 아니라면 -1을 리턴하게 된다.

if (intSqrtResult * intSqrtResult == n) {
    long long nextInt = intSqrtResult + 1;
    return nextInt * nextInt;
} else {
    return -1;
}

 

 

더 심플한 방법

다른 사람이 제출한 답을 보고 있는데 더 심플한 방법이 있더라.

long long solution(long long n) {
    if (sqrt(n) == floor(sqrt(n)))
        return pow(sqrt(n)+1,2);
    else
        return -1;
}

동작 자체는 나의 방법과 동일하다고 볼 수 있다.

floor와 round의 차이가 있긴 하지만 그렇게 다르다곤 볼 순 없지.

 

짧아지니 보기도 좋아졌다.

다른 사람이 어떻게 했는지 보는 것도 좋은 공부가 되는 것은 확실하다.

'Camp > T.I.L.' 카테고리의 다른 글

[TIL #15] 콜라츠 추측  (0) 2024.07.09
[TIL #14] 정수 내림차순으로 배치하기  (0) 2024.07.04
[TIL #12] 무조건적 서브쿼리를 지양하고 싶다  (0) 2024.07.02
[TIL #11] 나머지가 1이 되는 수 찾기  (0) 2024.07.01
[TIL #10] 자릿수 더하기 / 약수의 합  (0) 2024.06.28
'Camp/T.I.L.' 카테고리의 다른 글
  • [TIL #15] 콜라츠 추측
  • [TIL #14] 정수 내림차순으로 배치하기
  • [TIL #12] 무조건적 서브쿼리를 지양하고 싶다
  • [TIL #11] 나머지가 1이 되는 수 찾기
BVM
BVM
  • BVM
    E:\
    BVM
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Thoughts (14)
      • Study (69)
        • Japanese (3)
        • C++ & C# (46)
        • Javascript (3)
        • Python (14)
        • Others (3)
      • Play (1)
        • Battlefield (1)
      • Others (11)
      • Camp (73)
        • T.I.L. (57)
        • Temp (1)
        • Standard (10)
        • Challenge (3)
        • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 본 블로그 개설의 목적
  • 인기 글

  • 태그

    Server
    boost
    bot
    서버
    docker
    cloudtype
    C++
    Python
    JS
    FF14
    프로그래머스
    포인터
    OSI
    7계층
    Network
    db
    스타필드
    Dalamud
    클라우드
    discord py
    암호화
    c#
    Asio
    네트워크
    네트워크 프로그래밍
    discord
    Selenium
    로깅
    베데스다
    IOCP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
BVM
[TIL #13] 정수 제곱근 판별
상단으로

티스토리툴바