https://www.acmicpc.net/problem/10250
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
풀이
수식 풀이 (본인 풀이)
#include <stdio.h>
int main() {
int t, h, w, n;
int room;
scanf("%d", &t);
// t만큼 반복
for (int i = 0; i < t; i++) {
scanf("%d %d %d", &h, &w, &n); // 입력
// 꼭대기 층을 원하는 손님일 경우
if (n % h == 0 && h * w != n)
room = (h * 100) + (n / h);
// 마지막 방을 원하는 손님일 경우(h*w)
else if (n == h * w)
room = (h * 100) + w;
// 그외 손님
else if (n % h > 0 && h * w != n)
room = (n % h * 100) + (n / h + 1);
printf("%d\n", room);
}
return 0;
}
더욱 간결한 풀이
풀고 난 뒤 타유저들의 풀이를 보다 간결한 풀이를 발견했다.
위 1번, 2번 조건문의 공통점은 층을 제외한 방번호 부분이 n/h로 동일하다는 것이다.
(마지막 방일 때 w = n/h)
이를 공통분모로 수식을 재구성하면 밑과 같이 된다.
#include <stdio.h>
int main() {
int t, h, w, n;
int f, r; // 층, 호실
scanf("%d", &t);
// t만큼 반복
for (int i = 0; i < t; i++) {
scanf("%d %d %d", &h, &w, &n); // 입력
f = n % h;
r = n / h + 1;
// 꼭대기 층일 때
if (f == 0) {
f = h;
r -= 1;
}
printf("%d%02d\n", f,r);
}
return 0;
}
'코딩 > 백준 문제 (브론즈)' 카테고리의 다른 글
[백준/18406/파이썬] 럭키 스트레이트 _ 풀이 (2) | 2024.02.01 |
---|---|
[백준/1259/C언어] 팰린드롬수 _ 풀이 (2) | 2024.01.14 |
[백준/2920/C언어] 음계 _ 풀이 (2) | 2024.01.13 |
[백준/2475/C언어] 검증수 _ 풀이 (0) | 2024.01.13 |
[백준/10872/C언어] 팩토리얼 _ 풀이 (0) | 2023.10.25 |