[210212][백준/BOJ] 10093번 숫자

문제

입출력


풀이

정말 단순해 보이는 문제지만 생각해볼게 많은 문제이다.

첫째로 두 정수 A와 B가 1부터 10의 15승까지의 범위를 가진다.
따라서 int형으로는 두 정수를 담을수가 없다.
int형은 최대 대략 21억까지 담을 수 있으며 이를 초과하면 overflow가 발생하게 된다.
따라서 더 많은 범위의 수를 담을 수 있는 long long 자료형을 사용해야한다.

둘째로 B가 반드시 A보다 크다는 보장이 없으므로 모든 경우의 수를 다 생각해야한다.
A가 B보다 큰 경우의 수, A와 B가 같은 경우의 수, A가 B보다 작은 경우의 수를 생각하면 된다.

코드

#include <bits/stdc++.h>
using namespace std;

int main()
{
	long long A, B;
	cin >> A >> B;

	if (A > B)
	{
		std::swap(A, B);
	}
	if (A < B)
	{
		printf("%lld\n", B - A - 1);
		for (long long i = A + 1; i < B; i++)
			printf("%lld ", i);
	}
	else
		printf("0");
}

좋은 웹페이지 즐겨찾기