문제 설명

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

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

풀이 방법

1. n을 10으로 나눈 나머지를 벡터에 담는다.

2. n을 10으로 나눈 결과를 다시 n에 할당한다.

3. n이 0이 될 때까지 반복

4. 반복문이 끝나면 answer 리턴

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

 

'프로그래머스 > 1레벨' 카테고리의 다른 글

크기가 작은 부분문자열  (0) 2022.12.26
정수 내림차순으로 배치하기  (0) 2022.12.25
자릿수 더하기  (0) 2022.12.25
약수의 합  (0) 2022.12.25
최대공약수와 최소공배수  (0) 2022.12.25

문제 설명

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

제한사항
  • N의 범위 : 100,000,000 이하의 자연수

풀이 방법

1. n을 10으로 나눈 나머지를 answer에 더한다.

2. n에 n을 10으로 나눈 몫을 저장한다.

3. n이 0이 될 때까지 반복하고 answer를 리턴

#include <iostream>

using namespace std;
int solution(int n)
{
    int answer = 0;

    while(n > 0){
        answer += n % 10;
        n /= 10;
    }

    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

정수 내림차순으로 배치하기  (0) 2022.12.25
자연수 뒤집어 배열로 만들기  (2) 2022.12.25
약수의 합  (0) 2022.12.25
최대공약수와 최소공배수  (0) 2022.12.25
문자열을 정수로 바꾸기  (0) 2022.12.25

문제 설명

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

제한 사항
  • n은 0 이상 3000이하인 정수입니다.

풀이 방법

1. n번 만큼 반복하는 반복문에서 n % i의 나머지가 0일 때 answer에 i를 더한다

2. 반복문이 끝나면 answer 리턴

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

'프로그래머스 > 1레벨' 카테고리의 다른 글

자연수 뒤집어 배열로 만들기  (2) 2022.12.25
자릿수 더하기  (0) 2022.12.25
최대공약수와 최소공배수  (0) 2022.12.25
문자열을 정수로 바꾸기  (0) 2022.12.25
수박수박수박수박수박수?  (0) 2022.12.24

문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한 사항
  • 두 수는 1이상 1000000이하의 자연수입니다.

풀이방법

1. 입력된 두 수를 비교

2-1.  a가 b로 나누어 떨어지면 최대공약수가 b

2-2. 나누어 떨어지지 않는다면 b를 a%b로 나눈 값이 0이 될 때까지 반복

3. 최소공배수*최대공약수 = 두 수의 곱이므로 두 수의 곱을 최대공약수로 나누어서 나온 값이 최소공배수

4. answer를 리턴

#include <string>
#include <vector>

using namespace std;

int gcd(int a, int b){
    if(a % b == 0) return b;
    else return gcd(b, a%b);
    }

vector<int> solution(int n, int m) {
    vector<int> answer;
    
    int gt,lt;
    
    if (n >= m) {
        gt = n;
        lt = m;
    }
    else {
        gt = m;
        lt = n;
    }
    
    answer.push_back(gcd(gt,lt));
    answer.push_back(gt*lt/answer.at(0));
    
    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

자릿수 더하기  (0) 2022.12.25
약수의 합  (0) 2022.12.25
문자열을 정수로 바꾸기  (0) 2022.12.25
수박수박수박수박수박수?  (0) 2022.12.24
문자열 내림차순으로 배치하기  (0) 2022.12.24

문제 설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

제한 조건
  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 "0"으로 시작하지 않습니다.

풀이 방법

1. string to integer 함수를 이용해서 문자열 s를 int형으로 변환하여 answer에 담는다.

2. answer를 리턴한다.

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    answer = stoi(s);
    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

약수의 합  (0) 2022.12.25
최대공약수와 최소공배수  (0) 2022.12.25
수박수박수박수박수박수?  (0) 2022.12.24
문자열 내림차순으로 배치하기  (0) 2022.12.24
두 개 뽑아서 더하기  (0) 2022.12.24

문제 설명

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

제한 조건
  • n은 길이 10,000이하인 자연수입니다.

풀이 방법

1. n까지 반복문을 돌리며 i가 홀수면 "수", 짝수면 "박"을 answer에 담는다.

2. answer를 리턴

#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    string answer = "";
    
    for (int i = 1; i < n + 1; i ++){
        if( i % 2 == 1) answer += "수";
        else if( i % 2 == 0) answer += "박";
    }
    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

최대공약수와 최소공배수  (0) 2022.12.25
문자열을 정수로 바꾸기  (0) 2022.12.25
문자열 내림차순으로 배치하기  (0) 2022.12.24
두 개 뽑아서 더하기  (0) 2022.12.24
2016년  (2) 2022.12.24

문제 설명

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

제한 사항
  • str은 길이 1 이상인 문자열입니다.

풀이 방법

1. 이중 반복문을 통해 s.at(i)와 s.at(j)를 비교해서 s.at(i)가 작으면 두 개의 값을 교환한다.

2. 내림차순 정렬이 끝난 문자열 s를 리턴

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    char temp = ' ';
    
    for(int i = 0; i < s.length() - 1; i++){
        for(int j = i + 1; j < s.length(); j++)
            if(s.at(i) < s.at(j)){
                temp = s.at(i);
                s.at(i) = s.at(j);
                s.at(j) = temp;
            }
    }
    return s;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

문자열을 정수로 바꾸기  (0) 2022.12.25
수박수박수박수박수박수?  (0) 2022.12.24
두 개 뽑아서 더하기  (0) 2022.12.24
2016년  (2) 2022.12.24
가운데 글자 가져오기  (0) 2022.12.23

문제 설명

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.


제한사항
  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

풀이 방법

1. 이중 반복문을 통해 numbers.at(i)와 numbers.at(j)를 더한 값을 모두 answer에 담는다.

2. answer의 원소들을 오름차순으로 정렬한다.

3. unique 함수를 이용하여 answer 내부의 중복되는 원소들을 뒤로 밀어주고 unique 함수가 중복 없이 나열된 마지막 원소의 다음 인덱스를 반환하는 것을 이용해서 해당 리턴값부터 answer.end()까지 삭제해준다.

4. answer를 리턴한다.

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

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    
    for (int i = 0; i < numbers.size() - 1; i++){
        for (int j = i + 1; j <numbers.size(); j++)
            answer.push_back(numbers.at(i) + numbers.at(j));
    }
    
    sort(answer.begin(), answer.end());
    answer.erase(unique(answer.begin(), answer.end()), answer.end());
    
    return answer;
}

'프로그래머스 > 1레벨' 카테고리의 다른 글

수박수박수박수박수박수?  (0) 2022.12.24
문자열 내림차순으로 배치하기  (0) 2022.12.24
2016년  (2) 2022.12.24
가운데 글자 가져오기  (0) 2022.12.23
같은 숫자는 싫어  (0) 2022.12.23

+ Recent posts