입력 코드
#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' 카테고리의 다른 글
#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 |