본문 바로가기
C++/프로그래머스 문제풀이

23-01-09

by GameStudy 2023. 1. 9.

Ex) Level0 - 몫 구하기

<hide/>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num1, int num2) {
    int answer = num1 / num2;
    return answer;
}

 

Ex) Level0 - 두 수의 곱

<hide/>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num1, int num2) {
    int answer = num1 * num2;
    return answer;
}

 

Ex) Level0 - 두 수의 차

<hide/>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num1, int num2) {
    int answer = num1 - num2;
    return answer;
}

 

Ex) Level0 - 나머지 구하기

<hide/>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num1, int num2) {
    int answer = num1 % num2;
    return answer;
}

 

Ex) Level0 - 두 수의 합

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int num1, int num2) {
    int answer = num1 + num2;
    return answer;
}

 

Ex) Level0 - 나이 출력

  몇 년생인지 알 수 있음. 1900 + ((기준년도-1900+1) - 나이)

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int age) {
    int iCurrentYear = 2022 - 1900 + 1;
    int answer = 1900 + (iCurrentYear - age);
    return answer;
}

 

Ex) Level0 - 숫자 비교하기

<hide/>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num1, int num2) {
    
    if (num1 == num2)
    {
        return 1;
    }
    else 
    {
        return -1;
    }
    
}

 

Ex) Level0 - 각도기

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int angle) {
    int answer = 0;
    
    if (0 < angle && angle < 90)
    {
        answer = 1;
    }
    else if (90 == angle)
    {
        answer = 2;
    }
    else if (90 < angle && angle < 180)
    {
        answer = 3;
    }
    else if (180 == angle)
    {
        answer = 4;
    }
    
    return answer;
}

 

Ex) Level0 - 두 수의 나눗셈

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int num1, int num2) {
    int answer = ((float)num1 / num2) * 1000;
    return answer;
}

 

Ex) Level0 - 배열의 평균값

<hide/>

#include <string>
#include <vector>

using namespace std;

double solution(vector<int> numbers) {
    double answer = 0;
    int iSum = 0;
    size_t uSize = numbers.size();
    for (size_t i = 0; i < uSize; ++i)
    {
        iSum += numbers.at(i);
    }
    
    answer = (double)(iSum) / uSize;
    
    return answer;
}

 

Ex) Level0 - 짝수의 합

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    for (int i = n; i >= 1; --i)
    {
        if (i % 2 == 0)
        {
            answer += i;
        }
    }
    
    return answer;
}

 

Ex) Level0 - 머쓱이보다 키 큰 사람

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array, int height) {
    int answer = 0;
    size_t uSize = array.size();
    for (size_t i = 0; i < uSize; ++i)
    {
        if (height < array[i])
        {
            ++answer;
        }
    }
    
    return answer;
}

 

Ex) Level0 - 양꼬치

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(int n, int k) {
    int answer = 0;
    
    answer = 12000 * n + 2000 * k;
    answer -= 2000 * (n / 10);
    
    return answer;
}

 

Ex) Level0 - 중복된 숫자 개수

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array, int n) {
    int answer = 0;
    size_t uSize = array.size();
    
    for (size_t i = 0; i < uSize; ++i)
    {
        if (array.at(i) == n)
        {
            ++answer;
        }
    }
    
    return answer;
}

 

Ex) Level0 - 배열 뒤집기

  감소 연산자 --를 쓸 때, size_t 자료형을 사용에 주의하자.

<hide/>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> num_list) {
    vector<int> answer;
    size_t uSizeOfNumList = num_list.size();
    
    answer.resize(uSizeOfNumList);
    int j = 0;
    for (int i = uSizeOfNumList-1; i >= 0; --i)
    {
        answer[j] = num_list[i];
        ++j;
    }    
    
    return answer;
}

 

Ex) Level0 - 배열 두 배 만들기

<hide/>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    size_t uSizeOfNumbers = numbers.size();
    
    answer.resize(uSizeOfNumbers);
    for (int i = 0; i < uSizeOfNumbers; ++i)
    {
        answer.at(i) = numbers.at(i) * 2;
    }
    
    return answer;
}

 

Ex) Level0 - 짝수 홀수 개수

<hide/>

#include <string>
#include <vector>

using namespace std;

#define EVEN_AND_ODD (2)

vector<int> solution(vector<int> num_list) {
    vector<int> answer;
    answer.resize(EVEN_AND_ODD);
    
    size_t uSizeOfNumList = num_list.size();
    for (size_t i = 0; i < uSizeOfNumList; ++i)
    {
        if (num_list.at(i) % 2 == 0)
        {
            ++answer.at(0);
        }
        else
        {
            ++answer.at(1);
        }
    }
    
    return answer;
}

 

Ex) Level0 - 피자 나눠 먹기

  ceil(), floor(), round() 함수는 tgmath.h에 정의되어 있음.

<hide/>

#include <string>
#include <vector>
#include <tgmath.h>

using namespace std;

#define PIECE_COUNT (7)

int solution(int n) {
    int answer = 0;
    
    answer = ceil((double)n / PIECE_COUNT);
    
    return answer;
}

 

Ex) Level0 - 점의 위치 구하기

<hide/>

#include <string>
#include <vector>

using namespace std;

#define X (0)
#define Y (1)

int solution(vector<int> dot) {
    int answer = 0;
    
    if (0 < dot.at(X))
    {
        if (0 < dot.at(Y))
        {
            answer = 1;
        }
        else
        {
            answer = 4;
        }
    }
    else
    {
        if (0 < dot.at(Y))
        {
            answer = 2;
        }
        else
        {
            answer = 3;
        }
    }
    
    return answer;
}

 

Ex) Level0 - 문자열 뒤집기

<hide/>

#include <string>
#include <vector>

using namespace std;

string solution(string my_string) {
    string answer = "";
    int iSize = my_string.size();
    
    for (int i = iSize-1; i >= 0; --i)
    {
        answer += my_string.at(i);
    }    
    
    return answer;
}

 

Ex) Level0 - 피자 나눠 먹기

<hide/>

#include <string>
#include <vector>
#include <tgmath.h>

using namespace std;

int solution(int slice, int n) {
    int answer = ceil((double)n / slice);
    return answer;
}

 

Ex) Level0 - 배열 원소의 길이

<hide/>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> strlist) {
    vector<int> answer;
    size_t uSizeOfStrList = strlist.size();
    
    answer.resize(uSizeOfStrList);
    for (size_t i = 0; i < uSizeOfStrList; ++i)
    {
        answer.at(i) = strlist.at(i).size();
    }    
    
    return answer;
}

 

Ex) Level0 - 아이스 아메리카노

<hide/>

#include <string>
#include <vector>

using namespace std;

#define PRICE_OF_AMERICANO (5500)
#define ANSWER_SIZE (2)
#define AMERICANO_COUNT (0)
#define CHANGE (1)

vector<int> solution(int money) {
    vector<int> answer;
    answer.resize(ANSWER_SIZE);
    
    answer.at(AMERICANO_COUNT) = money / PRICE_OF_AMERICANO;
    answer.at(CHANGE) = money % PRICE_OF_AMERICANO;
    
    
    return answer;
}

 

Ex) Level0 - 편지

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(string message) {
    int answer = message.size() * 2;
    return answer;
}

 

Ex) Level0 - 배열 자르기

  문제를 꼼꼼히 읽도록 하자. index 착오..

<hide/>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers, int num1, int num2) {
    vector<int> answer;
    answer.resize(num2 - num1 + 1);

    size_t count = 0;
    for (size_t i = num1; i <= num2; ++i)
    {
        answer.at(count++) = numbers.at(i);
    }
    
    return answer;
}

 

Ex) Level0 - 특정 문자 제거하기

<hide/>

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string letter) {
    string answer = "";
    size_t uSizeOfMyString = my_string.size();
    
    for (size_t i = 0; i < uSizeOfMyString; ++i)
    {
        if (my_string.at(i) == letter.at(0))
        {
            continue;
        }
        else
        {
            answer += my_string.at(i);
        }
    }
    
    return answer;
}

 

Ex) Level0 - 삼각형의 완성조건 (1)

<hide/>

#include <string>
#include <vector>

using namespace std;

#define TRIANGLE (3)

int solution(vector<int> sides) {
    int answer = 0;
    int iSum = 0;
    int iMax = 0;
    
    for (size_t i = 0; i < TRIANGLE; ++i)
    {
        if (iMax < sides.at(i))
        {
            iMax = sides.at(i);
        }
        
        iSum += sides.at(i);
    }
    
    if (iSum - iMax <= iMax)
    {
        answer = 2;
    }
    else
    {
        answer = 1;
    }
    
    return answer;
}

 

Ex) Level0 - 최댓값 만들기(1)

  방심했음. 하나의 배열 안에서 가장 큰 1위 다음으로 큰 2위 값 찾기..

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> numbers) {
    int answer = 0;
    int iMax1 = 0;
    int iMax2 = 0;
    
    size_t uSizeOfNumbers = numbers.size();
    for (size_t i = 0; i < uSizeOfNumbers; ++i)
    {
        if (iMax2 < numbers.at(i))
        {
            iMax2 = numbers.at(i);
            if (iMax1 < numbers.at(i))
            {
                iMax2 = iMax1;
                iMax1 = numbers.at(i);    
            }
        }
    }
    answer = iMax1 * iMax2;
    
    return answer;
}

 

Ex) Level0 - 문자 반복 출력하기

  반복 횟수가 그리 많지 않아서 이중 반복문을 채택.

  실제 코테에서 반복 횟수가 많아진다면?.. 일단 이중 반복문으로 풀고, 나중에 최적화!

<hide/>

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, int n) {
    string answer = "";
    
    size_t uSizeOfMyString = my_string.size();
    for (size_t i = 0; i < uSizeOfMyString; ++i)
    {
        for (size_t j = 0; j < n; ++j)
        {
            answer += my_string.at(i);
        }
    }
    
    return answer;
}

 

Ex) Level0 - 짝수는 싫어요

<hide/>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n) {
    vector<int> answer;
    
    for (int i = 1; i <= n; ++i)
    {
        if (i % 2 == 1)
        {
            answer.push_back(i);
        }
    }
    
    return answer;
}

 

Ex) Level0 - 배열의 유사도

<hide/>

#include <string>
#include <vector>

using namespace std;

int solution(vector<string> s1, vector<string> s2) {
    int answer = 0;
    size_t uSizeOfS1 = s1.size();
    size_t uSizeOfS2 = s2.size();
    
    for (size_t i = 0; i < uSizeOfS1; ++i)
    {
        for (size_t j = 0; j < uSizeOfS2; ++j)
        {
            if (s1.at(i) == s2.at(j))
            {
                ++answer;
            }
        }
    }
    
    return answer;
}

 

Ex) Level0 - 옷가게 할인 받기 [X]

  floor() 함수를 사용해서 버림을 취했으나, 오히려 점수가 떨어짐. 다시 체크해봐야할듯.

<hide/>

#include <string>
#include <vector>
#include <tgmath.h>

using namespace std;

int solution(int price) {
    int answer = 0;
    int iDiscount = 0;
    if (300000 <= price)
    {
        iDiscount = 20;
    }
    else if (200000 <= price)
    {
        iDiscount = 10;
    }
    else if (100000 <= price)
    {
        iDiscount = 5;
    }
    
    answer = price - (price * (iDiscount / 100.f));
    
    return answer;
}

 

Ex) Level0 - 중앙값 구하기

  퀵소트 적용 가능. sort() 함수 사용법 알아두기.

<hide/>

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> array) {
    int answer = 0;
    size_t uSizeOfArray = array.size();
    
    sort(array.begin(), array.end());
    
    answer = array.at(uSizeOfArray / 2u);
    
    return answer;
}

 

Ex) Level0 - 순서쌍의 개수

  i 제곱 알고리으로 빠르게 구할 순 있을 듯.

<hide/>

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

 

Ex) Level0 - 문자열안에 문자열

 

'C++ > 프로그래머스 문제풀이' 카테고리의 다른 글

23-01-17  (0) 2023.01.17
23-01-16  (0) 2023.01.16
23-01-15  (0) 2023.01.15
23-01-11  (0) 2023.01.11
23-01-10  (0) 2023.01.10

댓글