Code-up은 C와 Python 위주이기에 프로그래머스로 변경했습니다.
코딩 기초 트레이닝
1. 문자열 출력하기
문제 설명
정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 10000
입출력 예
n result
123 "123"
2573 "2573"
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
return answer;
}
C++에서 정수형을 문자열로 변환하기 위해서는 string 클래스의 함수 중 to_string() 을 사용해 주면 된다. 변수 하나를 선언 후 to_string()에 n을 넣어 주면 답이 나온다.
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string i = to_string(n); //string형으로 선언
return i;
}
2. 문자열을 정수로 변환하기
문제 설명
숫자로만 이루어진 문자열 n_str이 주어질 때, n_str을 정수로 변환하여 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n_str ≤ 5
n_str은 0부터 9까지의 정수 문자로만 이루어져 있습니다.
입출력 예
n_str result
"10" 10
"8542" 8542
#include <string>
#include <vector>
using namespace std;
int solution(string n_str) {
int answer = 0;
return answer;
}
마찬가지로 string 클래스의 함수 중 stoi라는 문자열을 정수로 변환해 주는 함수를 사용하여 정수로 변환해 준다.
#include <string>
#include <vector>
using namespace std;
int solution(string n_str) {
int i = stoi(n_str);
return i;
}
3. 정수 부분
문제 설명
실수 flo가 매개 변수로 주어질 때, flo의 정수 부분을 return하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ flo ≤ 100
입출력 예
flo result
1.42 1
69.32 69
#include <string>
#include <vector>
using namespace std;
int solution(double flo) {
int answer = 0;
return answer;
}
flo가 double형이기 때문에 변수 하나를 정수형으로 선언한 후 안에다 flo 값을 넣어주면 쉽게 풀린다.
#include <string>
#include <vector>
using namespace std;
int solution(double flo) {
int answer = 0;
return answer;
}
4. 문자열 정수의 합
문제 설명
한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
3 ≤ num_str ≤ 100
입출력 예
num_str result
"123456789" 45
"1000000" 1
#include <string>
#include <vector>
using namespace std;
int solution(string num_str) {
int answer = 0;
return answer;
}
이 문제는 string 클래스의 함수 length()로 num_str 배열의 길이를 구한 뒤 각 자리수를 변수에 순차적으로 저장하면 된다. 먼저 이를 위해 정수형 변수를 초기화해야 한다.
length()의 반환값을 별도의 변수에 저장할 수도 있지만 효율적인 코드를 위해 반복문 안에서 바로 사용한다. 하지만 num_str[] 배열에는 문자열이 저장되기 때문에 각 문자는 아스키 코드로 인덱스에 저장된다. 이를 정수형으로 변환하려면 '0'(아스키 코드 48)을 빼주어야 한다. 답은 다음과 같다.
#include <string>
#include <vector>
using namespace std;
int solution(string num_str) {
int sum = 0;
for (int i = 0; i < num_str.length(); i++) {
sum += num_str[i] - '0'; //예: 1('49')-0('48')=1(sum이 int형임)
}
return sum;
}
4. 길이에 따른 연산
문제 설명
정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ num_list의 길이 ≤ 20
1 ≤ num_list의 원소 ≤ 9
num_list의 원소를 모두 곱했을 때 2,147,483,647를 넘는 입력은 주어지지 않습니다.
입출력 예
num_list result
[3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1] 51
[2, 3, 4, 5] 120
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> num_list) {
int answer = 0;
return answer;
}
우선 answer를 초기화 해 줘야 하는데 덧셈에서는 0이어야 하지만 곱셈에서는 1이어야 곱을 했을 때 답이 0이 되지 않는다. 따라서 길이에 따라 answer를 다르게 초기화 해 주어야 한다. 이후 반복문을 사용하여 변수값에 배열의 합/곱의 결과를 넣어주면 된다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> num_list) {
int answer;
if(num_list.size() >= 11)
answer = 0;
else
answer = 1;
for (int i=0; i < num_list.size(); i++) {
if (num_list.size() >= 11)
answer += num_list[i];
else
answer *= num_list[i];
}
return answer;
}
'코딩 스터디' 카테고리의 다른 글
[250128] C 스터디 2주차 (0) | 2025.01.29 |
---|---|
[241125] C++ 스터디 5주차 (0) | 2024.11.25 |
[241119] C++ 스터디 4주차 (0) | 2024.11.20 |
[241104] C++ 스터디 2주차 (0) | 2024.11.04 |
[241006] C++ 스터디 1주차 (10) | 2024.10.08 |