[백준 10093번] 숫자 C++ 풀이

문제

두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을작성하시오.

입력

두 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 10^15, A와 B의 차이는 최대 100,000)

출력

첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다.

내 풀이


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

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	long long  a(0), b(0);
	cin >> a >> b;
	if (a >= b) {
		if(a - b) cout << a - b - 1 << "\n";
		else cout << 0 << "\n";
		while (a - b > 1) {
			cout << ++b << ' ';
		}
	}
	else {
		if (b - a) cout << b - a - 1 << "\n";
		else cout << 0 << "\n";
		while (b - a > 1) {
			cout << ++a << ' ';
		}
	}
}

뭔가 생각보다 어려운 문제였다

더 좋은 듯한 풀이

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

int main(void){
	ios::sync_with_stdio(0);
	cin.tie(0);
	long long a, b; // data type
	cin >> a >> b;
	int cnt; 
	if(a > b){
		swap(a, b);
	}
	if(a != b){
		cout << b - a - 1 << '\n';
		for(long long i = a+1; i < b; i++)
			cout << i << ' ';
	}else
		cout << 0 << '\n';
	return 0;
}

swap(a, b)를 이용하여 중복되는 코드를 줄였다.