https://www.acmicpc.net/problem/2420
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)
'Koala - 8기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 10430 - 나머지 (0) | 2022.09.11 |
---|---|
[백준 / C++] 2869. 달팽이는 올라가고 싶다. (0) | 2022.09.11 |
[백준/c++] 4493번 가위 바위 보? (0) | 2022.09.11 |
백준 16170번 (0) | 2022.09.09 |
8기 기초 알고리즘 스터디 출석부 (0) | 2022.09.04 |