Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 숫자 (10093) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 숫자 (10093) (자바/Java)

luke-king 2024. 5. 16. 15:27

 

 

 

 

 

문제 : https://www.acmicpc.net/problem/10093

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

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){
            long temp = a;
            a = b;
            b = temp;
        }

        if (a == b) {
            System.out.println(a - b);
        } else{
            System.out.println(b - a - 1);
            for (long i = a + 1; i < b; i++) {
                System.out.print(i + " ");
            }
        }

    }


}

 

오늘 문제는 " 숫자 " 문제다. 

이번 문제는 정답 비율을 보면 정말 낮은 걸 볼 수 있다...  저렇게 낮다고..?? 얼마나 어렵길래 그렇지 하며 풀어본 문제인데 어려운 걸 떠나 문제 조건등 꼼꼼하게 읽고 풀라는 의미의 문제였던 거 같은 문제였다...

이 문제를 풀면서 대부분 30점 조건까지는 다 풀었을거라 생각이 든다. 하지만 70점을 채우지 못하고 그냥 포기하기엔 아쉬웠을 거다.

그럼 바로 풀이를 해보겠다.

 

1. 우선 입력값은 int가 아닌 long 타입으로 받아야 한다.

(필자는 타입은 long으로 하고 next.int를 써서 부분점수인 30점만 받았다... 하지만 nextLong으로 바꿔주자 바로 100점이 나왔다.)

 

2. a = 8, b = 14 일경우 별문제 없이 결과가 나오겠지만, 반대로 a > b일 경우 잘못된다는 걸 알 수 있다.

그러므로 조건식 a > b일 경우 루프가 돌기 전 a, b 정수 위치를 바꿔준다.

 

3. a == b 일경우 0을 출력한다. 이렇게만 하면 끝! 모두 만점을 향해 갈 수 있다!

(루프 알고리즘은 풀면서 어려움이 없을 거라 생각해 생략하겠다.)