Koala - 8기/기초 알고리즘 스터디

[C++] 백준 2420번: 사파리월드

luciduskim 2022. 9. 10. 18:22

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

 

2420번: 사파리월드

첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)

www.acmicpc.net

1. 문제

 사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw 이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오.

2. 입력

 첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)

3. 출력

 첫째 줄에 두 유명도의 차이 (|N-M|)을 출력한다.

4. C++ 코드

#include <iostream>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	long long n, m;
	cin >> n >> m;
	cout << abs(n - m) << "\n";

	return 0;
}

5. 문제 풀이

 주어진 문제에서 유명도 N과 M의 수의 범위를 보면 (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)인 것을 확인할 수 있다. 자료형을 int로 할 경우, int 자료형의 크기는 4byte로 -2^31 ~ 2^31 - 1의 범위를 다룰 수 있고, 이 범위는 -2,147,483,648 ~ 2,147,483,647에 해당한다. 즉, 두 수 N과 M의 최대 차이인 4,000,000,000을 표현할 수 없어 컴파일 시 원하지 않는 값이 출력된다.
 자료형을 long long (int)으로 할 경우, long long 자료형의 크기는 8byte로 -2^63 ~ 2^63 - 1의 범위를 다룰 수 있다. 이는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807에 해당한다. abs() 함수는 정수 인수의 절댓값을 반환한다.

[C++ 정수의 자료형]

char: 1byte(8bit), -2^7 ~ 2^7 - 1
(-128 ~ 127)
short (int): 2byte(16bit), -2^15 ~ 2^15  - 1
(-32,768 ~ 32,767)
int, long (int): 4bytte(32bit), -2^31 ~ 2^31 - 1
(-2,147,483,648 ~ 2,147,483,647)
long long (int): 8byte(64bit), -2^63 ~ 2^63 - 1
(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)