Notice
Recent Posts
Recent Comments
Tags
more
Today
Total
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
관리 메뉴

SW 꿈나무

[Level 1][C] 정수 제곱근 판별 본문

Algorithm/Programmers

[Level 1][C] 정수 제곱근 판별

현식 :) 2020. 3. 26. 17:45
  • 문제

    임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

    n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

  • 제한 조건

    n은 1 이상, 50,000,000,000,000 이하인 양의 정수

  • Example

    Input 1 : 121
    Input 2 : 3
    
    Output 1 : 144
    Output 2 : -1
  • Code

    #include <stdio.h>
    #include <stdbool.h>
    #include <stdlib.h>
    #include<math.h>
    
    long long solution(long long n) {
        long long answer = 0;                        // answer 선언 및 초기화
        long long max=sqrt(50000000000000);          // max 선언 및 루트 50,000,000,000,000
        for(long long i=0;i<max;i++) {               // 루트 50,000,000,000,000 동안 반복
            if(n==i*i) {                             // n이 i의 제곱이라면,
                answer=(i+1)*(i+1);                  // answer = (i+1) 의 제곱
                break;                               // 반복문 탈출
            }
            else {                                   // n이 i의 제곱이 아니라면,
                answer=-1;                           // answer 는 -1
            }
        }
        return answer;                               // answer 반환
    }
  • Other Code

    #include <stdio.h>
    #include <stdbool.h>
    #include <stdlib.h>
    #include<math.h>
    
    long long solution(long long n) {
        long long answer = 0;                        // answer 선언 및 초기화
    
        if((int)sqrt(n)==sqrt(n)) {                  // sqrt(n)의 정수형 캐스팅 값과 sqrt(n)의 값이 같으면,
            answer = (sqrt(n)+1)*(sqrt(n)+1);        // answer 는 sqrt(n)+1 의 제곱
          //answer = pow((sqrt(n))+1,2);             // 위와 동일
        }
        else {                                       // sqrt(n)의 정수형 캐스팅 값과 sqrt(n)의 값이 다르면,
            answer = -1;                             // answer 는 -1
        } 
    
        return answer;                               // answer 반환
    }
Comments