본문 바로가기

백준

[백준] ACM 호텔 (10250번)

728x90

코드 힌트

문제 해결 접근

  • 주어진 문제는 특정 층과 방 수를 가진 호텔에서 손님을 배정하는 방 번호를 계산하는 것입니다.
  • 각 손님은 특정 층의 특정 방에 배정되어야 하며, 방 번호는 층 수와 방 번호를 조합하여 생성됩니다.

층과 방 번호 계산하기

  • 층(floor)은 손님 번호 n을 총 층수 h로 나눈 나머지에 1을 더하여 결정합니다.
  • 방 번호(room)는 손님 번호 n을 총 층수 h로 나눈 몫에 1을 더하여 결정합니다.

문자열 포맷팅

  • String.format("%d%02d", floor, room)을 사용하여 방 번호를 두 자리로 포맷합니다. floor는 그대로 두 자리 수로 표시하고, room은 두 자리 수로 표시되며, 부족한 자리는 0으로 채워집니다.

 

 


정답은 더보기 클릭

더보기
import java.io.*;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        // 입력을 받기 위해 BufferedReader 사용
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 출력하기 위해 BufferedWriter 사용
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 테스트 케이스의 수를 읽어옴
        int count = Integer.parseInt(br.readLine());

        // 각 테스트 케이스를 처리
        for (int i = 0; i < count; i++) {
            // 층, 방 수, 손님 번호를 공백으로 구분하여 읽어옴
            String[] arr = br.readLine().split(" ");
            int h = Integer.parseInt(arr[0]); // 층 수
            int w = Integer.parseInt(arr[1]); // 방 수
            int n = Integer.parseInt(arr[2]); // n번째 손님

            // 손님이 배정될 층을 계산 (1부터 시작하는 층 번호)
            int floor = (n - 1) % h + 1;
            // 손님이 배정될 방 번호를 계산 (1부터 시작하는 방 번호)
            int room = (n - 1) / h + 1;

            // 방 번호를 문자열 포맷팅하여 생성 (층수와 방번호를 두 자리로 포맷)
            String roomNumber = String.format("%d%02d", floor, room);

            // 결과를 출력
            bw.write(roomNumber + "\n");
        }

        // 버퍼에 있는 내용을 출력하고 스트림을 닫음
        bw.flush();
        bw.close();
    }
}
728x90

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

[백준] 별 찍기 - 3 (2440번)  (0) 2024.08.15
[백준] 피보나치 수 5 (10870번)  (0) 2024.08.15
[백준] 팩토리얼 10872번  (0) 2024.08.14
[백준] OX퀴즈 8958번  (0) 2024.08.14
[백준] 더하기 사이클 1110번  (0) 2024.08.14