본문 바로가기

백준

[백준] 10250 ACM 호텔_ JAVA

●문제

 


● 풀이

 

층(h)만큼 n01호부터 차례대로 배정하고 n번째 손님의 호수를 출력하는 문제.

 

첫 풀이의 오류 : 계산을 402호일 때 층부분(4), 호수부분(2) 따로 계산해서 출력하느라 출력이 402호로 나와야 하는데 42로 나옴. 그렇다고 아래 코드처럼 0을 붙이면, 큰 수의 예시일 때 0이 들어가지 않는 호수도 있을 거임. 

아예 xx, yy으로 두자리의 숫자로 정해놓는건 어떻게 하는지 알아봐야함

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int T = in.nextInt();
        for(int i =0; i<T; i++){
            int h = in.nextInt();
            int w = in.nextInt();
            int n = in.nextInt();


            int xx = n%h;
            int yy = (n/h)+1;
            System.out.println(xx+"0"+yy);
        }
    }
}

 

두번째 풀이

 

 

뒤 호수 부분만 2자리로 지정해두면 되기에 String.format("%02", int a) 를 하면 두자리로 나오는 코드를 알아서 써봤는데, 출력도 멀쩡히 되지만 백준 제출에서 틀렸다고 나옴.. 왜지 ? 이유를 모르니

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int T = in.nextInt();
        for(int i =0; i<T; i++){
            int h = in.nextInt();
            int w = in.nextInt();
            int n = in.nextInt();

            int x = n%h;
            int y = (n/h)+1;

            String yy = String.format("%02d", y);
            System.out.println(x+yy);
        }
    }
}

최종 풀이!

 

내가 간과한 사실이 있었다. n%h==0일 때, 층는 0, 호수 부분은 +1을 해주면 안되는 것이었다..그래서 아래와 같이 n%h = =0 부분 조건을 걸어주었다.

 

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int T = in.nextInt();
        for (int i = 0; i < T; i++) {
            int h = in.nextInt();
            int w = in.nextInt();
            int n = in.nextInt();

            int x,y;
            if (n % h == 0) {
                x = h;
                y = n/h;
            } else {
                x = n % h;
                y = (n / h) + 1;
            }

            String yy = String.format("%02d", y);
            System.out.println(x + yy);
        }
    }
}

 


 

느낀 점 : 입력 예시에 없는 부분에 대한 오류가 나면 멘붕이 심하다.. 분명 예시 입력에는 맞는 출력이 나오는데,, 이렇게 싸피도 accept하고 넘어갔지만 틀린 부분이 있었을지도,, 이렇게 많은 문제 풀어보면서 오류가 날 만한 부분을 찾아가는 것도 연습해야겠다!

 

 

 

 

 

'백준' 카테고리의 다른 글

[백준] 2292 벌집_ JAVA  (0) 2023.06.03
[백준] 2231 분해합_ JAVA  (0) 2023.06.03
[백준] 1978 소수 찾기_ JAVA  (0) 2023.06.03
[백준] 1085 직사각형에서 탈출_ JAVA  (0) 2023.06.02
[백준] 4153 직각삼각형 _ JAVA  (0) 2023.06.02