[백준] [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(자료형)

댓글남기기