no image
프로그래머스/C++ 두 수의 차
문제 설명 정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요. 제한사항 50000 ≤ num1 ≤ 50000 50000 ≤ num2 ≤ 50000 입출력 예 num1 num2 result 2 3 -1 100 2 98 입출력 예 설명 입출력 예 #1 num1이 2이고 num2가 3이므로 2 - 3 = -1을 return합니다. 입출력 예 #2 num1이 100이고 num2가 2이므로 100 - 2 = 98을 return합니다. #include #include using namespace std; int solution(int num1, int num2) { return num1-num2; }
2023.10.16
no image
프로그래머스/C++ 글자 이어 붙여 문자열 만들기
문제 설명 문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ my_string의 길이 ≤ 1,000 my_string의 원소는 영소문자로 이루어져 있습니다. 1 ≤ index_list의 길이 ≤ 1,000 0 ≤ index_list의 원소
2023.10.05
no image
프로그래머스/C++ 간단한 논리 연산
문제 설명 boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요. (x1 ∨ x2) ∧ (x3 ∨ x4) 입출력 예 x1 x2 x3 x4 result false true true true true true false false false false 입출력 예 설명 입출력 예 #1 예제 1번의 x1, x2, x3, x4로 식을 계산하면 다음과 같습니다.따라서 true를 return 합니다. (x1 ∨ x2) ∧ (x3 ∨ x4) ≡ (F ∨ T) ∧ (T ∨ T) ≡ T ∧ T ≡ T 입출력 예 #2 예제 2번의 x1, x2, x3, x4로 식을 계산하면 다음과 같습니다.따라서 false를 retur..
2023.10.05
no image
프로그래머스/C++ 수열과 구간 쿼리 4
문제 설명 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ arr의 길이 ≤ 1,000 0 ≤ arr의 원소 ≤ 1,000,000 1 ≤ queries의 길이 ≤ 1,000 0 ≤ s ≤ e
2023.10.05
no image
프로그래머스/C++ 수열과 구간 쿼리 2
문제 설명 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다. 제한사항 1 ≤ arr의 길이 ≤ 1,000 0 ≤ arr의 원소 ≤ 1,000,000 1 ≤ queries의 길이 ≤ 1,000 0 ≤ s ≤ e
2023.10.04
no image
프로그래머스/C++ 콜라츠 수열 만들기
문제 설명 모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다. 그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다. 계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다. 임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ n ≤ 1,000 입출력 예 n result 10 [10, 5, 16, 8, 4, 2, 1] 입출력 예 설명 입출력 예 #1 순서대로..
2023.10.02
no image
프로그래머스/C++ 카운트 업
문제 설명 정수 start_num와 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ start_num ≤ end_num ≤ 50 입출력 예 start_num end_num result 3 10 [3, 4, 5, 6, 7, 8, 9, 10] 입출력 예 설명 입출력 예 #1 3부터 10까지의 숫자들을 담은 리스트 [3, 4, 5, 6, 7, 8, 9, 10]를 return합니다. #include #include using namespace std; vector solution(int start_num, int end_num) { vector answer; for(int i=start_nu..
2023.10.02
no image
프로그래머스/C++ 수열과 구간 쿼리 3
문제 설명 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다. 각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ arr의 길이 ≤ 1,000 0 ≤ arr의 원소 ≤ 1,000,000 1 ≤ queries의 길이 ≤ 1,000 0 ≤ i
2023.09.27
반응형

문제 설명

정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.


제한사항

  • 50000 ≤ num1 ≤ 50000
  • 50000 ≤ num2 ≤ 50000

입출력 예

num1 num2 result

2 3 -1
100 2 98

입출력 예 설명

입출력 예 #1

  • num1이 2이고 num2가 3이므로 2 - 3 = -1을 return합니다.

입출력 예 #2

  • num1이 100이고 num2가 2이므로 100 - 2 = 98을 return합니다.
#include <string>
#include <vector>

using namespace std;

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

 

반응형
반응형

문제 설명

문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string의 원소는 영소문자로 이루어져 있습니다.
  • 1 ≤ index_list의 길이 ≤ 1,000
  • 0 ≤ index_list의 원소 < my_string의 길이

입출력 예

my_string index_list result

"cvsgiorszzzmrpaqpe" [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7] "programmers"
"zpiaz" [1, 2, 0, 0, 3] "pizza"

입출력 예 설명

입출력 예 #1

  • 예제 1번의 my_string에서 인덱스 3, 5, 6, 11, 12, 14, 16, 17에 해당하는 글자는 각각 g, o, r, m, r, a, p, e이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, r, o, g, r, a, m, m, e, r, s입니다. 따라서 "programmers"를 return 합니다.

입출력 예 #2

  • 예제 2번의 my_string에서 인덱스 0, 1, 2, 3에 해당하는 글자는 각각 z, p, i, a이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, i, z, z, a입니다. 따라서 "pizza"를 return 합니다.
#include <string>
#include <vector>

using namespace std;

string solution(string my_string, vector<int> index_list) {
    string answer = "";
    for(int i=0; i<index_list.size(); i++){
        answer.push_back(my_string[index_list[i]]);
    }
    return answer;
}
반응형
반응형

문제 설명

boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요.

  • (x1 ∨ x2) ∧ (x3 ∨ x4)

입출력 예

x1 x2 x3 x4 result

false true true true true
true false false false false

입출력 예 설명

입출력 예 #1

  • 예제 1번의 x1, x2, x3, x4로 식을 계산하면 다음과 같습니다.따라서 true를 return 합니다.
  • (x1 ∨ x2) ∧ (x3 ∨ x4) ≡ (F ∨ T) ∧ (T ∨ T) ≡ T ∧ T ≡ T

입출력 예 #2

  • 예제 2번의 x1, x2, x3, x4로 식을 계산하면 다음과 같습니다.따라서 false를 return 합니다.
  • (x1 ∨ x2) ∧ (x3 ∨ x4) ≡ (T ∨ F) ∧ (F ∨ F) ≡ T ∧ F ≡ F

  • ∨과 ∧의 진리표는 다음과 같습니다.x y x ∨ y x ∧ y
    T T T T
    T F T F
    F T T F
    F F F F
    #include <string>
    #include <vector>
    
    using namespace std;
    
    bool solution(bool x1, bool x2, bool x3, bool x4) {
        bool answer = true;
        if( (x1 || x2) && (x3 || x4) ){
            return answer;
        }
        else return answer=false;
    }
    
반응형
반응형

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ s ≤ e < arr의 길이
    • 0 ≤ k ≤ 5

입출력 예

arr queries result

[0, 1, 2, 4, 3] [[0, 4, 1],[0, 3, 2],[0, 3, 3]] [3, 2, 4, 6, 4]

입출력 예 설명

입출력 예 #1

  • 각 쿼리에 따라 arr가 다음과 같이 변합니다.

arr


[0, 1, 2, 4, 3]


[1, 2, 3, 5, 4]


[2, 2, 4, 5, 4]


[3, 2, 4, 6, 4]


  • 따라서 [3, 2, 4, 6, 4]를 return 합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    vector<int> answer;
    for(auto que : queries){
        int s = que[0];
        int e = que[1];
        int k = que[2];
        
        for(int i=s; i<=e; i++){
            if(i%k==0) arr[i] += 1;
        }
    }
    answer = arr;
    return answer;
}

 

반응형
반응형

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.

각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.

단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.


제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ s ≤ e < arr의 길이
    • 0 ≤ k ≤ 1,000,000

입출력 예

arr queries result

[0, 1, 2, 4, 3] [[0, 4, 2],[0, 3, 2],[0, 2, 2]] [3, 4, -1]

입출력 예 설명

입출력 예 #1

  • 첫 번째 쿼리의 범위에는 0, 1, 2, 4, 3이 있으며 이 중 2보다 크면서 가장 작은 값은 3입니다.
  • 두 번째 쿼리의 범위에는 0, 1, 2, 4가 있으며 이 중 2보다 크면서 가장 작은 값은 4입니다.
  • 세 번째 쿼리의 범위에는 0, 1, 2가 있으며 여기에는 2보다 큰 값이 없습니다.
  • 따라서 [3, 4, -1]을 return 합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    vector<int> answer;
    
    for(int i=0; i<queries.size(); i++){
        int min = -1;
        
            for(int j=queries[i][0]; j<=queries[i][1]; j++){
                if(queries[i][2] < arr[j]){
                    if(min == -1 || arr[j] < arr[min]){
                        min = j;
                    }
                }
            }
        
        if(min == -1) answer.push_back(-1);
        else answer.push_back(arr[min]);
    }
    
    return answer;
}

 

반응형
반응형

문제 설명

모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다.

그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다.

계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다.

임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 1 ≤ n ≤ 1,000

입출력 예

n result

10 [10, 5, 16, 8, 4, 2, 1]

입출력 예 설명

입출력 예 #1

  • 순서대로 연산한 결과를 표로 만들면 다음과 같습니다.

연산 횟수 x 홀짝 여부

0 10 짝수
1 5 홀수
2 16 짝수
3 8 짝수
4 4 짝수
5 2 짝수
6 1 홀수
  • 따라서 [10, 5, 16, 8, 4, 2, 1]을 return 합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n) {
    vector<int> answer;
    
    while(n!=1){
        answer.push_back(n);
        if(n%2==0) n = n/2;
        else n = n*3+1;
    }
    answer.push_back(1);
    return answer;
}

짝수일때 홀수일때를 나눠서 값을 계속 바꿔준다.

반응형
반응형

문제 설명

정수 start_num와 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 0 ≤ start_num ≤ end_num ≤ 50

입출력 예

start_num end_num result

3 10 [3, 4, 5, 6, 7, 8, 9, 10]

입출력 예 설명

입출력 예 #1

  • 3부터 10까지의 숫자들을 담은 리스트 [3, 4, 5, 6, 7, 8, 9, 10]를 return합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(int start_num, int end_num) {
    vector<int> answer;
    for(int i=start_num; i<=end_num; i++) answer.push_back(i);
    return answer;
}

 

반응형
반응형

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.

각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ i < j < arr의 길이

입출력 예

arr queries result

[0, 1, 2, 3, 4] [[0, 3],[1, 2],[1, 4]] [3, 4, 1, 0, 2]

입출력 예 설명

입출력 예 #1

  • 각 쿼리에 따라 arr가 다음과 같이 변합니다.

arr


[0, 1, 2, 3, 4]


[3, 1, 2, 0, 4]


[3, 2, 1, 0, 4]


[3, 4, 1, 0, 2]


  • 따라서 [3, 4, 1, 0, 2]를 return 합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    vector<int> answer;
    for(int i=0; i< queries.size(); i++){
        int temp = arr[queries[i][0]];
        arr[queries[i][0]] = arr[queries[i][1]];
        arr[queries[i][1]] = temp;
    }
    for(int i=0; i<arr.size(); i++) answer.push_back(arr[i]);
    
    return answer;
}

배열을 잘 쓴다고 생각했지만 아직 너무나 부족하다.. 연습을 많이 해야겠다.

생각해보면 Buble Sort 하는 개념이랑 비슷한것같다. 2차원배열이라 어려워 보일뿐인듯 하다.

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {

    for(const auto& q : queries)
    {
        swap(arr[q[0]],arr[q[1]]);
    }
    return arr;
}

스왑으로도 하는 방법이 있었다..와우..

반응형