문제 설명

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.

 

제한사항

  • 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
  • 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
  • 놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수

입출력 예

3 20 4 10

 

입출력 예 설명

이용금액이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 10만큼 부족하므로 10을 return 합니다.


코드

long long solution(int price, int money, int count)
{
    long long answer = 0;
    long long total = 0;
    
    for(int i = 1; i<=count; i++)
    {
        total += price*i;
    }
    
    answer = total - money;
    
    if(answer < 0) answer = 0;

    return answer;
}

문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

 

재한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예

"abcde" "c"
"qwer" "we"

코드

string solution(string s) {
    string answer = "";
    int size = s.size();
    
    if(size%2==0)
    {
        answer = s.substr(size/2-1, 2);
    }
    else
    {
        answer = s[size/2];
    }
    
    return answer;
}

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

입출력 예

3 5 12
3 3 3
5 3 12

코드

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

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

제한 사항

  • str은 길이 1 이상인 문자열입니다.

입출력 예

"Zbcdefg" "gfedcbZ"

코드#1

string solution(string s) 
{
    char dump ;

    int size = s.size();

    for (int i = 0; i < size; i++)
    {
        for (int j = i+1; j < size; j++)
        {
            if (s[i] < s[j])
            {
                dump = s[i];
                s[i] = s[j];
                s[j] = dump;
            }
        }
    }
    return s;
}

코드#2

#include <algorithm>

using namespace std;

string solution(string s) 
{
    sort(s.begin(),s.end(), greater<char>());

    return s;
}
더보기

#include <algorithm> 헤더파일 추가

 

배열(arr), vector(v)

  1. sort(arr, arr + n);                                                             // 배열에서 사용 (시작점 주소, 마지막 주소 + 1)
  2. sort(v.begin(), v. end()); [less<자료형>() 생략]     // 오름차순 정렬 (default = Ascending order)
  3. sort(v.begin(), v. end(), greater<자료형>());         // 내림차순 정렬 (Descending order)
  4. sort(v.begin(), v. end(), compare);                          // 사용자 정의 함수 compare

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예

"a234" false
"1234" true

코드

bool solution(string s) {
    int size = s.size();
    
    if(size!=4 && size!=6)           return false;
    
    for(int i=0; i<size; i++)
    {
        if(s[i] < '0' || s[i] > '9') return false;    
    }
    
    return true;
}

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

"try hello world" "TrY HeLlO WoRlD"

코드

string solution(string s) 
{
    string answer = "";

    int size = s.size();
    int index = 0;

    for (int i = 0; i < size; i++)
    {
        if (s[i]== ' ')
        {
            index = 0;
            continue;
        }

        if (index % 2 == 0)
         {
            if (s[i] >= 'a' && s[i] <= 'z')
            {
                s[i] = s[i] - 32;
            }
        }
        else
        {
            if (s[i] >= 'A' && s[i] <= 'Z')
            {
                s[i] = s[i] + 32;
                
            }
        }
        index++;
    }

    return s;
}

 

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

12 28
5 6

코드

int solution(int n) {
    int answer = 0;
    
    int i = n;
    while(i!=0)
    {
        if(n%i == 0) answer+=i;
        i--;
    }
    
    return answer;
}

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

입출력 예

12345 [5,4,3,2,1]

코드

vector<int> solution(long long n) {
    vector<int> answer;
    
    while(n!=0)
    {
        answer.push_back(n%10);
        n = n/10;
    }
    
    return answer;
}

+ Recent posts