[프로그래머스 Level1] Math 1

Wonjun·2022년 5월 30일
0
post-thumbnail

📝 두 정수 사이의 합

문제 설명

  • 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 solution 함수를 작성하는 문제
  • 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴
  • a와 b가 같은 경우는 둘 중 아무 수나 리턴

해결 방법

a가 b보다 클 경우, 같을 경우, 작을 경우 분기를 나눠서 둘 사이의 모든 정수를 더했다

💻소스코드

#include <string>
#include <vector>

using namespace std;

long long solution(int a, int b) {
    long long answer = 0;
    if (a == b)
        answer = a;
    else if (a > b){
        for(int i = b; i <= a; i++)
            answer += i;
    }
    else if (a < b){
        for(int i = a; i <= b; i++)
            answer += i;
    }
    return answer;
}

📝 평균 구하기

문제 설명

평균 구하기

💻소스코드

  • C++
#include <string>
#include <vector>

using namespace std;

double solution(vector<int> arr) {
    double answer = 0;
    double sum = 0;
    for (int i = 0; i < arr.size(); i++)
        sum += arr[i];
    answer = sum / arr.size();
    return answer;
}
  • python
def solution(arr):
    return sum(arr) / len(arr)

📝 짝수와 홀수

문제 설명

  • 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수를 작성하는 문제

해결 방법

num을 2로 나눴을 때 나머지가 0이면 짝수이고, 1이면 홀수이다.

💻소스코드

#include <string>
#include <vector>

using namespace std;

string solution(int num) {
    string answer = "";
    if (num % 2 == 0)
        answer = "Even";
    else
        answer = "Odd";
    return answer;
}

📝 x만큼 간격이 있는 n개의 숫자

문제 설명

  • 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다.
  • 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

해결 방법

answer 객체에 x부터 x만큼 증가하는 n개의 수를 push_back() 멤버함수를 사용해서 넣어준다

💻소스코드

#include <string>
#include <vector>

using namespace std;

vector<long long> solution(int x, int n) {
    vector<long long> answer;
    int inc = x;
    for(int i = 0; i < n; i++){
        answer.push_back(x);
        x += inc;
    }
    return answer;
}

📝 약수의 합

문제 설명

  • 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
  • n은 0 이상 3000이하인 정수입니다.

해결 방법

나눴을 때 나머지가 0이 되는 수를 모두 더한다. (1과 n 포함)

💻소스코드

#include <string>
#include <vector>

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;
}

📝 자릿수 더하기

문제 설명

  • 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
  • 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항

  • N의 범위 : 100,000,000 이하의 자연수

해결 방법

n을 10으로 나눈 나머지를 더하고, 10으로 나눠주는 과정을 반복한다.
그러면 각 n의 각 자릿수의 합을 구할 수 있다.

💻소스코드

#include <iostream>

using namespace std;
int solution(int n)
{
    int answer = 0;
    while (n > 0){
        answer += n % 10;
        n /= 10;
    }
    return answer;
}

📝 자연수 뒤집어 배열로 만들기

문제 설명

자연수 뒤집어 배열로 만들기

해결 방법

자연수 n을 일의 자리수부터 차례대로 최고 자리수까지 push_back()하게 되면 자동으로 뒤집어진 배열이 완성된다.
n을 10으로 나눈 나머지를 push_back 해준 다음, n을 10으로 나누는 과정을 n이 0이 될때까지 반복한다.

💻소스코드

#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;
}

profile
알고리즘

0개의 댓글