[백준 10093번] 숫자
J-Shine
[백준 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)를 이용하여 중복되는 코드를 줄였다.