백준 알고리즘 | 10250번 - ACM호텔

백준 알고리즘 10250번 : ACM호텔 JAVA

백준 알고리즘 10250번 : ACM호텔 문제 바로가기

풀이 방법

  1. h는 호텔의 가장 높은 층, w는 각 층의 번호가 가장 큰 방의 번호, n는 손님이 입장한 순서

  2. 방 번호는 층수+번호로 이루어져 있다. 예를 들어 방번호가 402호라면 4는 층수, 2가 번호이다.

  3. n번째 손님이 입장한 방번호의 층수는 n%h(n을 h로 나눴을 때의 나머지)이다.

  4. n번째 손님이 입장한 방번호의 번호는 n/h+1 이다.

이때 고려해야 할 점

  1. 방 번호가 일의 자리라면, 앞에 0을 붙여서 출력해야 한다. 예를 들어 방번호가 3이라면, 03으로 출력해야 한다.

  2. 0층은 없다. n%h값이 0이라면 h층에 배정이 된다.

  3. 103호보다 301호를 선호한다. 3번째 손님은 301호로 배정되어야 한다. n이 h보다 작은 수라면 층번호는 n이 되어야 한다.

소스코드

import java.io.*;

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 string[] =br.readLine().split(" ");
			int h,w,n;
			h = Integer.parseInt(string[0]);
			w = Integer.parseInt(string[1]);
			n = Integer.parseInt(string[2]);
			int floor;
			int room;
			if (n%h<=0) {
				if (n%h==0) 
					floor = h;
				else
					floor = n;
				room = n/h;
			}
			else {
				floor = n%h;
				room = (n/h)+1;
			}
			System.out.println(floor+String.format("%02d", room));
		}
	}
}

좋은 웹페이지 즐겨찾기