https://www.acmicpc.net/problem/10250
호텔 방 번호 규칙찾기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while (t-- > 0) {
int h = sc.nextInt();
int w = sc.nextInt();
int n = sc.nextInt();
int x = (n / h) + 1; // 호수
int y = n % h; // 층수
if (y == 0) {
x = n / h;
y = h;
}
System.out.println(y * 100 + x);
}
}
}
조건 1. 손님이 온 순서대로 방을 배정하는데 거리가 가까운 방 먼저 배정한다.
조건 2. (1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W) 에 따라 W는 고려할 필요가 없다.
따라서 N과 H만을 이용하여 풀이가 가능한데 층수는 N%H로 구할 수 있다. 6층과 12개의 방, 10번째 도착한 손님의 경우 10%6=4(층)으로 4층에 배정받는다. 만약, N%H==0인 6번째 손님이 도착할 경우에는 H층에 그대로 배정받는다.
그렇다면 호수는 어떻게 구할까? 호수는 (N/H)+1로 구할 수 있다. 이때 N%H==0인 경우 N/H만 해주면 된다.
결과적으로 층과 호수를 더해주면 되는데 출력형식 YXX나 YYXX에 따라 100을 곱해준 후 층과 호수를 더해서 출력한다.