백준 10250 ACM 호텔

Eunkyung·2021년 10월 27일
0

Algorithm

목록 보기
2/30

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을 곱해준 후 층과 호수를 더해서 출력한다.

profile
꾸준히 하자

0개의 댓글