코딩 테스트/백준

[백준10250/JAVA] ACM 호텔

리져니 2021. 12. 22. 21:44

 

https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

 

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for(int i=0;i<t;i++){
            String[] arr = br.readLine().split(" ");
            int h = Integer.parseInt(arr[0]);
            int n = Integer.parseInt(arr[2]);

            int floor = n%h;
            int ho = n/h;

            if(floor==0){
                floor=h;
            }else{
                ho+=1;
            }

            if(Integer.toString(ho).length()==1){
                System.out.println(floor+"0"+ho);
            }else{
                System.out.println(Integer.toString(floor)+ho);
            }
        }
    }
}

 

설명

주어진 문제와 예시를 읽어보면 101호부터 201호, 301호, ... n01호, 102호, 202호,... n02호,.. n0m호 식으로 층별로 손님을 채워나간다.

(문제 해결에 w값은 쓰이지 않는다. 때문에 h와 n값만을 사용한다.)

 

호실(ho)는 사람수(n)를 높이(h)로 나눈 몫이 되고 층(floor)은 사람수(n)을 높이(h)로 나눈 나머지가 되는데,

- 만약 그 나머지 값이 0이라면 층별로 사람을 모두 채우고 남는 사람이 없다는 의미 이므로, 이때의 층(floor)는 높이(h) 자체가 된다.

- 나머지 값이 0이 아니라면, 층별로 사람을 채우고도 남는 사람이 있다는 것이므로 그 다음 호실로 넘긴다(ho+=1)

 

728x90