C언어

백준 10824번 네 수 : stoi 부터 stoull까지 문자열과 숫자 변환

mcdn 2020. 8. 18. 17:42
반응형

https://www.acmicpc.net/problem/10824

 

10824번: 네 수

첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)

www.acmicpc.net

예제 입력 1 복사

10 20 30 40

예제 출력 1 복사

4060

 

중요!

예제 입력 2 추가

result가 int형으로 선언되어있는데

1000000 1000000 1000000 1000000 이렇게 들어오면

result의 값은 어떻게 될까요?

 

1000000 1000000 1000000 1000000 

예제 출력 2

20000002000000

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(void)
{
	int abc[4];
	for (int i = 0; i < 4;i++)
		cin >> abc[i];
	string str[4];
	for (int i = 0; i < 4;i++)
		str[i] = to_string(abc[i]);
	string a, b;
	a = str[0] + str[1];
	b = str[2] + str[3];
	int num1, num2;
	num1 = stoi(a);
	num2 = stoi(b);
	cout << num1 + num2;

}

처음 구현한거 

int형으로 구현해서 런타임에러남

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(void)
{
	int abc[4];
	for (int i = 0; i < 4;i++)
		cin >> abc[i];
	string str[4];
	for (int i = 0; i < 4;i++)
		str[i] = to_string(abc[i]);
	string a, b;
	a = str[0] + str[1];
	b = str[2] + str[3];
	double num1, num2;
	num1 = stoi(a);
	num2 = stoi(b);
	printf("%.f", num1 + num2);

}

두번째 구현

착각해섴ㅋㅋㅋㅋlonglong이 아닌 double을 씀 

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(void)
{
	int abc[4];
	for (int i = 0; i < 4;i++)
		cin >> abc[i];
	string str[4];
	for (int i = 0; i < 4;i++)
		str[i] = to_string(abc[i]);
	string a, b;
	a = str[0] + str[1];
	b = str[2] + str[3];
	long long num1, num2;
	num1 = stoull(a);
	num2 = stoull(b);
	printf("%lld", num1 + num2);

}

마지막 정답

stoi는 string->int이므로 long long으로 못 바꿔줌 

stoull 같은 변형 stoi를 써야 한다. 

https://blockdmask.tistory.com/333

 

반응형