문제 설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

풀이 방법

1. s의 길이가 4나 6이 아니라면  false 리턴

2. 문자열 중에 숫자가 아닌 부분이 있다면 false 리턴

3. 위의 if문에 모두 만족하지 않는다면 문제의 조건에 부합하므로 true 리턴

#include <string>
#include <vector>

using namespace std;

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

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

음양 더하기  (0) 2022.12.26
약수의 개수와 덧셈  (0) 2022.12.26
나머지가 1이 되는 수 찾기  (0) 2022.12.26
크기가 작은 부분문자열  (0) 2022.12.26
정수 내림차순으로 배치하기  (0) 2022.12.25
문제 설명

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.


제한사항
  • 3 ≤ n ≤ 1,000,000

풀이 방법

1.  answer가 0이 아니면 반복이 끝나는 반복문을 작성한다.

2. 반복문 내에서 n을 num으로 나눈 나머지가 1이면 answer = num이고 아니면 num++를 해준다.

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

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    int num = 1;
    
    while(answer == 0){
        if( n % num == 1)
            answer = num;
        num++;
    }
    
    return answer;
}

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

약수의 개수와 덧셈  (0) 2022.12.26
문자열 다루기 기본  (0) 2022.12.26
크기가 작은 부분문자열  (0) 2022.12.26
정수 내림차순으로 배치하기  (0) 2022.12.25
자연수 뒤집어 배열로 만들기  (2) 2022.12.25

문제 설명

숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.

예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.


제한사항
  • 1 ≤ p의 길이 ≤ 18
  • p의 길이 ≤ t의 길이 ≤ 10,000
  • t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.

풀이 방법

1. 문자열 t에서 문자열 p와 길이가 같은 부분을 문자열 str에 담는 반복문을 작성한다.

2. compare함수를 통해 p와 str을 비교하여 크기가 작거나 같으면 answer값에 1을 더해준다.

3. 문자열 str을 비우고 다시 반복한다.

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

#include <string>
#include <vector>

using namespace std;

int solution(string t, string p) {
    int answer = 0;
    string str = "";
    
    for(int i = 0; i + p.length() - 1 < t.length(); i++){
        for(int j = i; j < i + p.length(); j++){
            str += t.at(j);
        }
        
        if (p.compare(str) >= 0) answer++;
        str.clear();
    }
    
    return answer;
}

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

문자열 다루기 기본  (0) 2022.12.26
나머지가 1이 되는 수 찾기  (0) 2022.12.26
정수 내림차순으로 배치하기  (0) 2022.12.25
자연수 뒤집어 배열로 만들기  (2) 2022.12.25
자릿수 더하기  (0) 2022.12.25

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한 조건
  • n은 1이상 8000000000 이하인 자연수입니다.

 

풀이 방법 1

1. to_string 함수로 n을 문자열 s로 변환

2. <algorithm> 라이브러리의 sort()함수를 이용해서 내림차순으로 정렬

3. stoll()함수로 문자열 s를 long long형으로 변환

4. answer 리턴

 

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

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    
    string s = to_string(n);
    
    sort(s.begin(), s.end(), greater<>());
    
    answer = stoll(s);
    
    return answer;
}

 

풀이 방법 2

1. to_string 함수로 n을 문자열 s로 변환

2. 반복문을 통해 각 문자를 비교하여 내림차순으로 정렬

3. stoll()함수로 문자열 s를 long long형으로 변환

4. answer 리턴

#include <string>
#include <vector

using namespace std;

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

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

나머지가 1이 되는 수 찾기  (0) 2022.12.26
크기가 작은 부분문자열  (0) 2022.12.26
자연수 뒤집어 배열로 만들기  (2) 2022.12.25
자릿수 더하기  (0) 2022.12.25
약수의 합  (0) 2022.12.25

문제 설명

자연수 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

+ Recent posts