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
no image
프로그래머스/C++ 수 조작하기 2
문제 설명 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다. "w" : 수에 1을 더한다. "s" : 수에 1을 뺀다. "d" : 수에 10을 더한다. "a" : 수에 10을 뺀다. 그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요. 제한사항 2 ≤ numLog의 길이 ≤ 100,000 100,000 ≤ numLog[0..
2023.09.27
no image
프로그래머스/C++ 수 조작하기 1
문제 설명 정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다. "w" : n이 1 커집니다. "s" : n이 1 작아집니다. "d" : n이 10 커집니다. "a" : n이 10 작아집니다. 위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요. 제한사항 100,000 ≤ n ≤ 100,000 1 ≤ control의 길이 ≤ 100,000 control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다. 입출력 예 n control result 0 "wsdawsdassw..
2023.09.27
프로그래머스/C++ 마지막 두 원소
문제 설명 정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list의 길이 ≤ 10 1 ≤ num_list의 원소 ≤ 9 입출력 예 num_list result [2, 1, 6] [2, 1, 6, 5] [5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10] 입출력 예 설명 입출력 예 #1 마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다. 입출력 예 #2 마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을..
2023.09.27
프로그래머스/C++ 원소들의 곱과 합
문제 설명 정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list의 길이 ≤ 10 1 ≤ num_list의 원소 ≤ 9 입출력 예 num_list result [3, 4, 5, 2, 1] 1 [5, 7, 8, 3] 0 입출력 예 설명 입출력 예 #1 모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다. 입출력 예 #2 모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다. #include #include #include #include using namespace std; int solution(vector ..
2023.09.26
C++ cout, "<<", endl;
C++ cout cout은 cout
2023.09.26
C++
프로그래머스/C++ 등차수열의 특정한 항만 더하기
#include #include using namespace std; int solution(int a, int d, vector included) { int answer = 0; for(int i=0; i
2023.09.25
반응형

문제 설명

정수 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;
}

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

반응형
반응형

문제 설명

정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.

  • "w" : 수에 1을 더한다.
  • "s" : 수에 1을 뺀다.
  • "d" : 수에 10을 더한다.
  • "a" : 수에 10을 뺀다.

그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.

주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 2 ≤ numLog의 길이 ≤ 100,000
    • 100,000 ≤ numLog[0] ≤ 100,000
    • 1 ≤ i ≤ numLog의 길이인 모든 i에 대해 |numLog[i] - numLog[i - 1]|의 값은 1 또는 10입니다.

입출력 예

numLog result

[0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1] "wsdawsdassw"

입출력 예 설명

입출력 예 #1

  • result인 "wsdawsdassw"를 따라 numLog[0]에서부터 시작해 조작을 하면 numLog의 값과 순서대로 일치합니다. 따라서 "wsdawsdassw"를 return 합니다.

Hint

"수 조작하기 1" 문제의 n값이 numLog[0]에 해당하며, 이 문제에서 주어진 numLog에 따라 "수 조작하기 1" 문제의 control을 구하는 문제라고 이해할 수 있습니다.

입출력 예 #1은 "수 조작하기 1" 문제의 입출력 예 #1과 같은 예시이므로 참고하시기 바랍니다.

#include <string>
#include <vector>

using namespace std;

string solution(vector<int> numLog) {
    string answer = "";
    int num = 0;
    for(int i=1; i<numLog.size(); i++){
        num = numLog[i] - numLog[i-1];
        if(num == 1 ) answer += "w";
        else if(num == -1) answer += "s";
        else if(num == 10) answer +="d";
        else if(num == -10) answer += "a";
    }
    
    
    return answer;
}

하..전에 풀었던 수 조작하기 1에서 map을 이용해 풀어볼려했지만 부족했다 다시 풀어보자.

#include <string>
#include <vector>
#include <map>

using namespace std;

string solution(vector<int> numLog) {
    string answer = "";
    map <int, char> m = {{1, 'w'}, {-1, 's'}, {10, 'd'}, {-10, 'a'}};
    for(int i=1; i<numLog.size(); i++){
        answer += m[numLog[i] - numLog[i-1]];
    }
    
    
    return answer;
}

후..이런식으로도 문제를 풀수있다.. map을 잘 활용해보자.

반응형
반응형

문제 설명

정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

  • "w" : n이 1 커집니다.
  • "s" : n이 1 작아집니다.
  • "d" : n이 10 커집니다.
  • "a" : n이 10 작아집니다.

위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 100,000 ≤ n ≤ 100,000
  • 1 ≤ control의 길이 ≤ 100,000
    • control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.

입출력 예

n control result

0 "wsdawsdassw" -1

입출력 예 설명

입출력 예 #1

  • 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
  • 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
  • 따라서 -1을 return 합니다.
#include <string>
#include <vector>

using namespace std;

int solution(int n, string control) {
    int answer = 0;
    for(int i=0; i<control.size(); i++){
        char sel = control[i];
        switch(sel){
            case 'w':
                n ++; break;
            case 's':
                n --; break;
            case 'd':
                n += 10; break;
            case 'a':
                n -= 10; break;
        }
    }
    answer = n;
    
    return answer;
}

다른버전

#include <string>
#include <vector>
#include <map>
using namespace std;

map <char, int> m = {{'w', 1}, {'s', -1}, {'d', 10}, {'a', -10}};
int solution(int n, string control) {
    int answer = n;
    for(char ch : control)
        answer += m[ch];
    return answer;
}

와.. 이거보고 놀랐다 이런식으로도 코드를 쓸수있구나 라는걸..많이 배워야겠다..

#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(int n, string control) {
    int answer = 0;
    map <char, int> m = {{'w', 1}, {'s', -1}, {'d', 10}, {'a', -10}};
    for(char con : control){
        n += m[con];
    }
    answer = n;
    
    return answer;
}

이건 참고하고 내가 만들어본 코드다. 앞으로 이런 방식도 많이 써 봐야겠다

foreach문이랑 map을 이용한 간단한 코드로.. 크..이게 코딩이지

반응형
반응형

문제 설명

정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.


제한사항

  • 2 ≤ num_list의 길이 ≤ 10
  • 1 ≤ num_list의 원소 ≤ 9

입출력 예

num_list result

[2, 1, 6] [2, 1, 6, 5]
[5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10]

입출력 예 설명

입출력 예 #1

  • 마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.

입출력 예 #2

  • 마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.
#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> num_list) {
    vector<int> answer = num_list;
    int a1 = answer[answer.size()-2];
    int a2 = answer[answer.size()-1];
    if(a2 > a1) answer.push_back(a2-a1);
    else answer.push_back(a2*2);
    
    return answer;
}

 

반응형
반응형

문제 설명

정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 2 ≤ num_list의 길이 ≤ 10
  • 1 ≤ num_list의 원소 ≤ 9

입출력 예

num_list result

[3, 4, 5, 2, 1] 1
[5, 7, 8, 3] 0

 


입출력 예 설명

입출력 예 #1

  • 모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.

입출력 예 #2

  • 모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.
#include <string>
#include <vector>
#include <cmath>
#include <iostream>

using namespace std;

int solution(vector<int> num_list) {
    int answer = 0;
    int num_mul = 1;
    int sum_squared = 0;
    for(int i=0; i<num_list.size(); i++){
        num_mul *= num_list[i];
        sum_squared += num_list[i];
    }
    sum_squared = pow(sum_squared,2);
    if(sum_squared < num_mul) answer = 0;
    else answer = 1;
    
    return answer;
}

 

반응형

C++ cout, "<<", endl;

Dev_Jen
|2023. 9. 26. 01:43
반응형

C++ cout

cout은 cout << " C++ ";
이런식으로 출력문을 나타내는 객체이다
표준 출력 스트림을 나타내는 객체라고도 하며
콘솔에 텍스트를 출력하는데 주로 사용된다고 한다.

cout 객체는 C++의 표준 라이브러리에서 제공되며, iostream 헤더 파일에 정의되어 있다.

사용방법 : cout을 사용하여 텍스트를 출력하려면 <iostream> 헤더 파일을 포함하고, 다음과 같이 
<< 연산자를 사용하여 출력할 내용을 지정한다.

솔직히 cout이라고 왜 지정을했을까 이유를 찾아봤다.
왜 cout일까..

gpt에게 물어보니 cout이라는 이름은 C++ 표준 라이브러리에서 사용되는 약속된 이름이라고 한다
console output 의 줄임말이라고하니 왜 cout이라고 명칭을 지었는지 알겠다!
궁금증 해결@

그리고 cout과 같이 사용하는 << 과 endl; 이 있다
<< 연산자는 C++에서 출력 스트림에 데이터를 쓰는데 사용되는 연산자라고 한다.
이 연산자를 사용하여 데이터를 스트림에 "삽입" 하거나 출력하는 작업을 수행한다고 알려줬다.
C++의 입출력 라이브러리에서 데이터를 스트림으로 흘려보내는 역할이다 라니.
흠.. 그냥 cout을 사용할때 필수적이니 그렇게 알고있어야겠다.

endl은 말 그대로 끝나는지점이며, 개행 문자를 삽입하여 줄을 바꿔준다.
라고 알고있으면 될 것 같다.

반응형
반응형
#include <string>
#include <vector>

using namespace std;

int solution(int a, int d, vector<bool> included) {
    int answer = 0;
    for(int i=0; i<included.size(); ++i){
        if(included[i]) answer += a + i * d;
    }
    
    return answer;
}

확실히 코딩을 잘하려면 코드를 줄이는 방법이나 수학적으로 생각을 많이 해야된다 이것도 생각을 깊이 해보고 코드를 줄인것이다. 그냥 문제를 많이 풀어보는게 답인듯하다..

반응형