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
프로그래머스/C++ 코드 처리하기
문제 설명 문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. mode가 1일 때 code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 1에서 0으로 바꿉..
2023.09.24
프로그래머스/C++ flag에 따라 다른 값 반환하기
#include #include using namespace std; int solution(int a, int b, bool flag) { int answer = 0; if(flag == true){ answer = a + b; } else{ answer = a-b; } return answer; }
2023.09.24
반응형

문제 설명

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

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

반응형
반응형

문제 설명

문자열 code가 주어집니다.

code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.

mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.

  • mode가 0일 때
    • code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
    • code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.
  • mode가 1일 때
    • code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
    • code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다.

문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요.

단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.


제한사항

  • 1 ≤ code의 길이 ≤ 100,000
    • code는 알파벳 소문자 또는 "1"로 이루어진 문자열입니다.

입출력 예

 code                               result

"abc1abc1abc" "acbac"

 


입출력 예 설명

입출력 예 #1

  • code의 각 인덱스 i에 따라 다음과 같이 mode와 ret가 변합니다.

i code[i] mode ret

0 "a" 0 "a"
1 "b" 0 "a"
2 "c" 0 "ac"
3 "1" 1 "ac"
4 "a" 1 "ac"
5 "b" 1 "acb"
6 "c" 1 "acb"
7 "1" 0 "acb"
8 "a" 0 "acba"
9 "b" 0 "acba"
10 "c" 0 "acbac"

따라서 "acbac"를 return 합니다.

#include <string>
#include <vector>

using namespace std;

string solution(string code) {
    string answer = "";
    string ret = "";
    bool mode = false;
    
    for(int i=0; i<code.size(); i++){
        if(code[i] == '1') mode = !mode;
        else if(mode == false && i%2==0) ret += code[i];
        else if(mode == true && i%2==1) ret += code[i];
    }
    if(ret.empty()) answer = "EMPTY";
    else answer = ret;
    
    return answer;
}

오 조금 시간이 걸린 코드였다 중간에 1이 문자열에 자꾸 들어가서 살짝 고생했지만

if문을 전체로 묶어서 했으면 될만한 문제였다.. 그렇게 어려운 문제는 아니였는데 ㅠㅜ 다음부터는 꼼꼼히 보자..

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

using namespace std;

int solution(int a, int b, bool flag) {
    int answer = 0;
    if(flag == true){
        answer = a + b;
    }
    else{
        answer = a-b;
    }
    
    return answer;
}
반응형