그저 내가 되었고

☕️Java:: 백준 자바 10093번 본문

개발/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문 돌려 출력해주면 그만.