[백준] [C/C++] 10824번 : 네 수
업데이트:
문제
네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.
두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.
입력
첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)
출력
A와 B를 붙인 수와 C와 D를 붙인 수의 합을 출력한다.
예제 입력 1
10 20 30 40
예제 출력 1
4060
풀이
#include <iostream>
#include <string>
using namespace std;
using std::endl;
using std::cout;
using std::cin;
int main() {
string str1, str2, str3, str4;
cin >> str1 >> str2 >> str3 >> str4;
string temp1 = str1 + str2;
string temp2 = str3 + str4;
long long res1 = stoll(temp1);
long long res2 = stoll(temp2);
cout << res1 + res2 << endl;
return 0;
알고리즘 [ 접근방법 ]
이전에도 비슷한 문제를 몇번 풀어본 경험이 있는데 C++로 바꾸면서 STL 포스팅도 좀 할 겸 글을 적어보려 한다.
문제는 단순하다. 입력받은 수를 두개씩 묶어서 합친후 더하면된다.
그러나 ( 1<= A,B,C,D <= 1,000,000 ) 의 범위를 가지므로 일반 숫자형으로는 해당 범위안에서 처리 할 수가없다. 커버할 수 있는 범위를 넘어서기 때문이다. 자료형마다 커버할 수 있는 범위는 아래 그림과 같다.
따라서 문자열로 받은 뒤 문자열을 숫자로 바꿔주는 과정이 필요한데 여기선 String의 STL을 사용하면 간편하게 풀 수 있다.
long long res1 = stoll(temp1);
long long res2 = stoll(temp2);
변환하려는 자료형에 맞게 stoi, stol, stof, stoll 등 다양하게 사용하면 된다.
참고로 숫자를 문자열로 변환할 때는 아래 코드를 응용하면 된다.
string temp = to_string(자료형)
댓글남기기