입력 코드
#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로 나눈 나머지)층에 배정된다.
↓↓↓ 참고한 사이트
[C 언어] 백준 10250. ACM 호텔
10250. ACM 호텔 (누르면 해당 문제로 이동) 호텔 방 번호의 규칙을 찾아 출력하는 문제 제약사항) 시간 : 1 초 메모리 : 256 MB 문제) ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있
mjeong9316.tistory.com
문제 출처
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
'C' 카테고리의 다른 글
#22. [백준_C언어] 1110 : 더하기 사이클 (0) | 2021.01.09 |
---|---|
#21. [백준_C언어] 11050 : 이항 계수 1 (0) | 2021.01.09 |
#19. [백준_C언어] 2798 : 블랙잭 (0) | 2021.01.08 |
#18. [백준_C언어] 1259 : 팰린드롬수 (0) | 2021.01.07 |
#17. [백준_C언어] 1085 : 직사각형에서 탈출 (0) | 2021.01.07 |