개발/Java
☕️Java:: 백준 자바 10093번
hyuunii
2023. 8. 9. 19:03
문제
두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.
입력
두 정수 A와 B가 주어진다.
출력
첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다.
서브태스크
번호 | 배점 | 제한 |
1 | 30 | 1 ≤ A, B ≤ 1000. |
2 | 70 | 1 ≤ A, B ≤ 10*15, A와 B의 차이는 최대 100,000. |
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
if(a > b) {
System.out.println((a - b) - 1);
for(Long i = b + 1; i < a; i++) {
System.out.print(i + " ");
}
} else if(a < b) {
System.out.println((b - a) - 1);
for(Long i = a + 1; i < b; i++) {
System.out.print(i + " ");
}
} else { //case a == b
System.out.println(0);
}
}
}
|
cs |
헤맨 포인트
1. 서브태스크 2번때문에 입력값의 타입을 long으로 지정해야 하는 점
2. 1번에 이어서.. Long으로 적으면 '래퍼클래스'가 되어 또 틀림..... long으로 지정 필요(T T)
3. 애당초 a와 b의 크기가 문제의 주범이므로 걔를 기준으로 케이스 나눠야 하고, 그러므로 처음에 Math.abs(b-a) - 1 이런 과정이 필요가 없다. 그냥 케이스 딱딱 나눠서 그에 따라 for문 돌려 출력해주면 그만.