728x90
반응형
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 2;
for(int i = 1; i < n; i++){
if(i * i == n){
answer = 1;
}
}
return answer;
}
처음엔 else까지 사용해서 조건에 부합하지 않은 경우 2를 출력하도록 했지만 왜인지 오류를 출력하였다.
정수의 제곱수가 아닌 경우가 훨씬 많으므로 시작부터 answer = 2라고 정의하고, 제곱수인 경우만 찾아서 1을 출력하도록 조건문을 작성해주었다.
모든 숫자를 반복하는데 같은 숫자를 곱했을 때 n이 되는 경우에만 조건 안에 들어와 answer = 1을 출력하도록 했다.
제곱수 관련한 함수에는 pow와 sqrt가 있는데
첫번째로 pow 함수를 사용한 풀이를 찾았다.
#include <cmath>
#include <iostream>
using namespace std;
int solution(int n) {
int i = sqrt(n);
if (pow(i, 2) == n)
return 1;
else
return 2;
}
sqrt 함수를 사용한 풀이는 다음과 같다
#include <bits/stdc++.h>
using namespace std;
int solution(int n) {
int q = sqrt(n);
return q * q == n ? 1 : 2;
}
아예 이런 접근도 있었다. answer의 값을 0이 아닌 값으로 정의해서 풀이한 경우도 있었다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = sqrt(n);
answer = (answer * answer == n)? 1:2;
return answer;
}
728x90
반응형
'프로그래머스 C++ > Level.0' 카테고리의 다른 글
프로그래머스 Level.0 자릿수 더하기 (0) | 2023.08.11 |
---|---|
프로그래머스 Level.0 숨어있는 숫자의 덧셈 (1) (0) | 2023.08.02 |
프로그래머스 C++ Level. 0 편지 (0) | 2023.06.25 |
프로그래머스 C++ Level. 0 배열 자르기 (0) | 2023.04.27 |
프로그래머스 C++ Level. 0 문자열로 변환 (0) | 2023.04.26 |