#20. [백준_C언어] 10250 : ACM 호텔

 

 입력 코드 

#include <stdio.h>

main() {
	int T, H, W, N;
	scanf("%d", &T);

	int i;
	for (i = 0; i < T; i++) {
		scanf("%d %d %d", &H, &W, &N);

		if (N%H == 0)
			printf("%d\n", H * 100 + (N / H));
		else
			printf("%d\n", (N%H) * 100 + (N / H + 1));
	}
}

 

 코드 설명 

반복문과 조건문, 수식을 이용하는 문제

#include <stdio.h>

main() {
	int T, H, W, N;
	scanf("%d", &T);

	int i;
	for (i = 0; i < T; i++) {
		scanf("%d %d %d", &H, &W, &N);

	}
}

호텔 정문까지 거리가 가장 짧도록 배정하려면 H개 층의 1호에 손님들을 모두 배정한 후에 차례대로 2호, 3호에 배정하면 된다. 그런데 어떻게 N번째 손님을 방에 배정해야 할지 생각이 안 났다.

 

#include <stdio.h>

main() {
	int T, H, W, N;
	scanf("%d", &T);

	int i;
	for (i = 0; i < T; i++) {
		scanf("%d %d %d", &H, &W, &N);

		if (N%H == 0)
			printf("%d\n", H * 100 + (N / H));
		else
			printf("%d\n", (N%H) * 100 + (N / H + 1));
	}
}

만약 5층 호텔이라면 10번째 손님은 502호에 배정된다. 즉 H개 층이 있고, N이 H의 배수라면 (H를 N으로 나눈 나머지가 0이라면) H층에 배정되는 것이다. 

 

마찬가지로 15번째 손님은 503호에 배정된다. 즉 N이 H의 배수라면 , N번째 손님은 (N을 H로 나눈 몫)에 해당하는 호에 배정된다.

 

그리고 만약 16번째 손님이 온다면 104호에 배정된다. 즉, N이 H의 배수가 아니라면 (N을 H로 나눈 몫 + 1)호에 배정되고, (N을 H로 나눈 나머지)층에 배정된다.

 

 

↓ 참고한 사이트

mjeong9316.tistory.com/145

 

[C 언어] 백준 10250. ACM 호텔

10250. ACM 호텔 (누르면 해당 문제로 이동) 호텔 방 번호의 규칙을 찾아 출력하는 문제 제약사항) 시간 : 1 초 메모리 : 256 MB 문제) ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있

mjeong9316.tistory.com

 

 문제 출처 

www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net