코딩 테스트/프로그래머스

[프로그래머스] 코딩 기초 트레이닝 PART 3(C++)

JongHoon 2024. 1. 5. 21:27

프로그래머스  코딩 테스트 연습 : 코딩 기초 트레이닝(C++)

https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&page=1&partIds=44139

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr


프로그래머스 코딩 기초 트레이닝 : 문자열 섞기

https://school.programmers.co.kr/learn/courses/30/lessons/181942

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

길이가 같은 두 문자열 str1과 str2가 주어집니다.

두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.


제한 사항

  • 1 ≤ str1의 길이 = str2의 길이 ≤ 10
    • str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.

입출력 예


코드

#include <string>
#include <vector>

using namespace std;

string solution(string str1, string str2) {
    string answer = "";
    for (int i = 0; i < str1.size(); i++) {
        answer += str1[i];
        answer += str2[i];
    }
    
    return answer;
}
// 다른 사람의 풀이 : vector를 이용하는 방법

#include <string>
#include <vector>

using namespace std;

string solution(string str1, string str2) {
    string answer = "";

    for(int i=0; i<str1.length(); i++)
    {
        answer.push_back(str1[i]);
        answer.push_back(str2[i]);
    }
    return answer;
}

결과


프로그래머스 코딩 기초 트레이닝 : 문자 리스트를 문자열로 변환하기

https://school.programmers.co.kr/learn/courses/30/lessons/181941

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

문자들이 담겨있는 배열 arr가 주어집니다. 

arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.


제한 사항

  • 1 ≤ arr의 길이 ≤ 200
    • arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열입니다.

입출력 예


코드

#include <string>
#include <vector>

using namespace std;

string solution(vector<string> arr) {
    string answer = "";
    
    for (int i = 0; i < arr.size(); i++)
        answer += arr[i];
    
    return answer;
}
// 다른 사람의 풀이 : accumulate 함수를 사용하는 방법

#include <bits/stdc++.h>
using namespace std;

string solution(vector<string> arr) {
    return accumulate(arr.begin(), arr.end(), string(""));
}

결과

 


프로그래머스 코딩 기초 트레이닝 : 문자열 곱하기

https://school.programmers.co.kr/learn/courses/30/lessons/181940

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.


제한 사항

  • 1  ≤ my_string의 길이 ≤ 100
  • my_string은 영소문자로만 이루어져 있습니다.
  • 1 ≤ k ≤ 100

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, int k) {
    string answer = "";
    
    for (int i = 0; i < k; i ++)
        answer += my_string;
    
    return answer;
}
// 다른 사람의 풀이 : append 함수를 사용하는 방법

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, int k) {
    string answer = "";
    while (k--) answer.append(my_string);
    return answer;
}

결과


프로그래머스 코딩 기초 트레이닝 : 더 크게 합치기

https://school.programmers.co.kr/learn/courses/30/lessons/181939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.


제한 사항

  • 1 ≤ ab < 10,000

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b) {
    int answer = 0;
    string ab = "", ba = "";
    
    ab = to_string(a) + to_string(b);
    ba = to_string(b) + to_string(a);
    
    if (stoi(ab) >= stoi(ba))
        answer = stoi(ab);
    else
        answer = stoi(ba);
    
    return answer;
}
// 다른 사람의 풀이 : max 함수 사용하는 방법

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b) {
    return max(stoi(to_string(a)+to_string(b)),stoi(to_string(b)+to_string(a)));
}

결과


프로그래머스 코딩 기초 트레이닝 : 두 수의 연산값 비교하기

https://school.programmers.co.kr/learn/courses/30/lessons/181938

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.


제한 사항

  • 1 ≤ ab < 10,000 

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b) {
    return max(stoi(to_string(a) + to_string(b)),2*a*b);
}

결과


여담

앞으로 다른 사람의 풀이를 기본적으로 문제를 풀어 보는대로 확인해서, 문제를 더 효율적으로 해결한 코드나 문제가 의도한 느낌의 코드(일종의 모범 답안 느낌?)가 있다면 함께 게시할 생각이다.

나잊고 있었던 C, C++의 함수를 되새길 수 있을 것 같고, 훨씬 짧고 직관적인 코드를 작성하는데에도 도움이 될 것 같다.