[프로그래머스 / C++] 정수 제곱근 판별

YH·2023년 12월 12일
0

문제

정수 제곱근 판별 : 문제 링크


문제 분석

  • 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 한다. n이 양의 정수 x의 제곱이라면 x + 1의 제곱을 return 하고, n이 양의 정수 x의 제곱이 아니라면 -1을 return
  • 제한 사항
    • n은 1이상, 50,000,000,000,000이하인 자연수이다.
  • 양의 정수 x의 값을 저장할 long long형 변수 answer을 1로 초기화. while loop의 조건문을 answer * answer <= n로 설정하여 n이하의 제곱근을 찾을때까지 반복. if문을 통해 answer의 제곱이 n과 같다면 answer + 1의 제곱을 return 하고, 아니라면 answer을 1씩 늘리고 계속 반복. loop를 탈출 했다면 제곱수가 아님을 뜻하므로 -1을 return

풀이

using namespace std;

long long solution(long long n) {
    long long answer = 1;
    
    while(answer * answer <= n) {
        if(answer * answer == n) return (answer + 1) * (answer + 1); 
        answer++;
    }
    return -1;
}
profile
Keep Recycling Your Dreams

0개의 댓글