본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12934
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
'알고리즘 > [프로그래머스]Lv.1' 카테고리의 다른 글
[프로그래머스]Lv1. 없는 숫자 더하기 (0) | 2022.10.31 |
---|---|
[프로그래머스]Lv1. 약수의 개수와 덧셈 (0) | 2022.10.31 |
[프로그래머스]Lv1. 문자열 다루기 (0) | 2022.10.31 |
[프로그래머스]Lv1. 핸드폰 번호 가리기 (0) | 2022.10.26 |
[프로그래머스]Lv1. 문자열을 정수로 (0) | 2022.10.26 |