문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
입출력 예
n return
12 28
5 6
#include <iostream>
using namespace std;
int solution(int n) {
int answer = 0;
for (int i =1; i<=n;i++)
{
if(n%i==0)
{
answer+=i;
}
}
return answer;
}
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
입출력 예
arr | return
[1,2,3,4] | 2.5
[5,5] | 5
#include <string>
#include <vector>
using namespace std;
double solution(vector<int> arr) {
double answer = 0;
//for(int i =0; i <arr.size();i++)
//{
// answer+=arr[i];
//}
for(auto i : arr)
{
answer+=i;
}
answer/=arr.size();
return answer;
}
문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
입출력 예
num return
3 "Odd"
4 "Even"
#include <string>
#include <vector>
using namespace std;
string solution(int num) {
string answer = "";
if(num%2==0)//짝수
{
answer = "Even";
}
else answer = "Odd";
return answer;
}
#include <string>
#include <vector>
using namespace std;
string solution(int num) {
string answer = "";
return num & 1 ? "Odd" : "Even";
}
n은 10000000 이하의 숫자이기에 10000000이 될수도 있다는 가정하에 i를 10000000 부터 내려가도록 설정하였다.
1보다 작아질 때까지 10씩 나누고, n이 i보다 커졌을때 앞자리부터 추출한다.
#include <iostream>
#include <vector>
using namespace std;
int solution(int n)
{
int answer = 0;
vector<int> N;
for(int i = 100000000; i >= 1; i = i / 10)
{
int num = 0;
if(n >= i)
{
num = n / i;
N.push_back(num);
n -= num * i;
}
}
for(auto i : N)
{
answer += i;
}
return answer;
}
#include <iostream>
#include <string>
using namespace std;
int solution(int n)
{
int answer = 0;
string s = to_string(n);
for(int i = 0; i < s.size(); i++)
{
answer += (s[i] - '0');
}
return answer;
}
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
while (n > 0)
{
answer += n % 10;
n /= 10;
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
vector<int> N;
for(int i =1; i<n;i++)
{
if(n%i==1) N.push_back(i);
}
for(auto i : N)
{
if(n>i) n=i;
}
answer=n;
return answer;
}
가장 작은 수 이기때문에 'i'값을 올려가며 가장 먼저나온 수를 반환값으로 지정하면 쉬운 문제였다. 그리고 3보다 큰 수이기때문에 'i=2'로 시작값을 지정해도 무방했다.
너무 어렵게 생각했기에 조금 아쉬움이 남는다.
모든것을 vector로 풀려고 하는 버릇을 고쳐야할 것 같다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
for (int i=2 ; i<n ; i++)
{
if (n % i == 1)
{
return i;
}
}
}
#include <string>
#include <vector>
using namespace std;
vector<int> solution(long long n) {
vector<int> answer;
int x;
while (n > 0)
{
x=n%10;
answer.push_back(x);
n /= 10;
}
return answer;
}
answer.push_back (n % 10);
따로 변수지정없이 바로 벡터에 넣으면 간편하다는 것을 깨달았다. 그럼 한단계 줄어든다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(long long n) {
vector<int> answer;
while (n > 0) {
answer.push_back (n % 10);
n /= 10;
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
long long solution(long long n)
{
long long answer =0;
for (long long i=1;i<n/2+1;i++)
{
if(n==i*i)
{
answer = (i+1)*(i+1);
return answer;
}
}
return -1;
}