마이라이프해피라이프

[알고리즘 스터디] 백준 10824번 c++ 풀이 - out of range 에러, long long type 본문

컴퓨터/백준(C++)

[알고리즘 스터디] 백준 10824번 c++ 풀이 - out of range 에러, long long type

YONJAAN 2022. 3. 30. 00:01

# 문제 10824번: 네 수

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

 

10824번: 네 수

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

www.acmicpc.net

# Concepts to solve this problem. 

-> stoi: string to int / stol: string to long / stoll: string to long long 

참고 링크 https://en.cppreference.com/w/cpp/string/basic_string/stol

-> long long / long / int 의 차이

type range
int –2,147,483,648 ~ 2,147,483,647
long –2,147,483,648 ~ 2,147,483,647
long long –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

# Code

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

int main() {
	string one, two, three, four; 
	cin >> one >> two >> three >> four;
	string result_1 = one + two; 
	string result_2 = three + four;
	long long result = stoll(result_1) + stoll(result_2);
	cout << result;

	return 0; 
}

 

# Erorr

stoi 나 result를 저장할 때 int를 사용한다면 out of range 오류가 발생할 수 있다. 

숫자 범위를 보면 1,000,000이하의 수로 단순히 붙여놓으면 int 범위를 넘는 10000001000000라는 큰 수가 나온다. 

int가 가질 수 있는 범위를 넘어버리기 때문에 out of range 오류가 발생하고 이를 해결하기 위해 더 큰 수를 담을 수 있는 long long type을 사용해야 한다.