<문제>
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
<유형>
정수론, 반복문
<풀이>
제곱수는 무엇인가.
문제에서 친절하게 알려주고 있다. 예를 들어 2^2 = 4에서 제곱수는 4이다.
이를 판별하기 위해서는 라이브러리를 사용해야한다. 라이브러리를 사용하지 않으면 계산 속도가 좀 더 빠르게 될 수도 있지만... 코드가 길어지며, 경우의 수를 계산해야한다.
쉽게 가자.
라이브러리는 cmath이며 sqrt(제곱수)는 루트를 의미한다. 자주쓰는 pow(자연수, 승수)도 알아두면 좋다.
판별하기 위해서는 sqrt(제곱수)가 정수형이 나오는지를 알아내면 된다.
<답>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
if(sqrt(n) == (int)sqrt(n)) {
answer = 1;
} else {
answer = 2;
}
return answer;
}
그런데, 출력값이 어떻게 나오는지 궁금해서 알아봤다.
제곱수가 아닌 976를 예시로 들어서 보자.
cout << sqrt(976);
31.241 이 나온다.
그럼 여기서 (int)를 씌우면?
cout << (int)sqrt(976);
31이 나온다.
당연한 말이지만 정확한 출력값을 알면 더 이해하기가 쉬울듯 해서 알아보았다.
'[C++] 프로그래머스' 카테고리의 다른 글
[프로그래머스/c++] 중앙값 구하기 (0) | 2022.11.08 |
---|---|
[프로그래머스/c++] 분수의 덧셈 (0) | 2022.11.03 |
[프로그래머스/c++] 배열 원소의 크기 (1) | 2022.10.19 |
[코딩테스트 입문] 자릿수 더하기 (0) | 2022.10.14 |
[코딩테스트 입문] 세균 증식 (0) | 2022.10.14 |