문제
입력
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W).
출력
프로그램은 표준 출력에 출력한다. 각 테스트 데이터마다 정확히 한 행을 출력하는데, 내용은 N 번째 손님에게 배정되어야 하는 방 번호를 출력한다.
내 풀이
n을 h로 나눈 몫과 나머지를 통해 구할 수 있습니다.
n / h 몫이 방 호수, n % h 가 층 수가 됩니다. h = 6, w = 6, n = 10 일 때, 그림을 그려보면 손님은 402호를 배정받아야 합니다.
n / h = 1 이고 n % h = 4 입니다. 따라서 floor = n % h, room = n / h +1 이 됩니다.
여기서 추가로 n % h == 0인 경우도 고려해야 합니다.
h = 4, w = 10, n = 8 일 때, 실제 손님이 배정되는 방은 402호입니다.
n / h = 2 이고 n % h = 0 입니다. 따라서 floor = h, room = n / h 가 됩니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int size = Integer.parseInt(br.readLine());
for (int i = 0; i < size; i++) {
StringTokenizer tk = new StringTokenizer(br.readLine());
int h = Integer.parseInt(tk.nextToken()); //층수
int w = Integer.parseInt(tk.nextToken()); //방수
int n = Integer.parseInt(tk.nextToken()); //몇 번째 손님
int floor;
int room;
if (n % h == 0) {
floor = h;
room = n / h;
} else {
floor = n % h;
room = n / h + 1;
}
floor = floor * 100;
bw.write(floor + room + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
728x90
'코딩테스트' 카테고리의 다른 글
[백준/Java] Fly me to the Alpha Centauri (0) | 2023.03.07 |
---|---|
[백준/Java] 소수 구하기 (0) | 2023.03.07 |
[백준/Java] 달팽이는 올라가고 싶다 (0) | 2023.03.07 |
[백준/Java] 베르트랑 공준 (0) | 2023.03.06 |
[백준/Java] 설탕 배달 (0) | 2023.03.06 |