본문 바로가기

알고리즘/[프로그래머스]Lv.1

[프로그래머스]Lv1. 정수 제곱근 판별

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

1.문제설명

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

 

2. 문제해결 접근

  • 제곱근을 구하는 Math함수를 확인한다.
  • 조건문으로 n의 제곱근임을 확인하고 제시된 내용을 반환한다.

 

3.답안 : [언어 : Java]

import java.util.*;

class Solution {
    public long solution(long n) {
       long answer = 0;
	        
	        if( Math.sqrt(n) - (long)Math.sqrt(n) == 0) {
	        	answer = (long) Math.pow(Math.sqrt(n)+1, 2);
	        }else {
	        	answer = -1;
	        }
	        
	        return answer;
	    }
    
}

 

 

4. C++ 답안

#include <string>
#include <vector>
#include <math.h>
using namespace std;

long long solution(long long n) {
    long long answer = 0;

    long long llSqrt = sqrt(n);

    answer = pow(llSqrt, 2) == n ? pow(llSqrt + 1, 2) : -1;

    return answer;
}

 

n의 제곱근을 구하는 함수를 사용하고,

  • 조건문의 조건 -> 제곱근이 같다는 개념이 아닌,
  • 제곱한 값이 == n과 같다 
  • 삼항연산자 사용

로 훨씬 간결한 코드가 되었다.

 

5. C++ 문법 설명과 표현법

5_1) C++ 데이터 형식 범위 

 

https://2jinishappy.tistory.com/66

 

C/C++ 데이터 형식 범위(int, double, long long 범위)

유형 이름 바이트 범위 (signed)int 4 -2,147,483,648 ~ 2,147,483,647 unsigned int 4 0 ~ 4,294,967,295 char 1 -128 ~ 127 unsigned char 1 0 ~ 255 short, (sighed)short int 2 -32,768 ~ 32,767 (signed)long..

2jinishappy.tistory.com