[백준 10250] ACM 호텔
백준 10250번 - ACM 호텔
❓ 문제
너무 기니까 위 링크 참고.
✏️ 풀이
간단하다.
input으로 호텔의 W와 H를 받고 몇 번째 손님인지를 받는다면, 몇 호인지 배정해주면 되는 문제이다.
단, 조건은 걷는 거리가 같을 때 아래층의 방을 선호한다
고 적혀있다.
따라서, 우리는 1번 손님 -> 101호, 2번 손님 -> 201호 이런식으로 1층 1호부터 x층 1호까지 위로 쭉 받고, 꼭대기 층일 때, 202호부터 x층2호 까지 쭉 손님을 받는 식으로 배정해주면 된다.
굉장히 간단한 문제이고, 스피디하게 풀었다가 틀렸다.ㅋㅋ역시
아래의 식을 이용하였다.
방 번호 = 100 * (N % H) + (N / H) + 1
위 예제 입출력 케이스는 다 통과하였으나, 위의 식에는 반례가 존재하였다.
input : 6 12 6 -> output : 2
즉, 꼭대기 층에서의 식은 따로 작성을 해주어야 했다.
꼭대기 층의 식 : acm = 100 * H + (N / H)
(N%H==0)일 때 case를 나눠서 다른 식을 적용해주었고, 두 번의 시도만에 정답을 맞출 수 있었다.
✔️ 정답 코드
#include <iostream>
#include <vector>
using namespace std;
vector<int> result;
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int H, W, T, N;
cin >> T;
for (int i = 0; i < T; i++) {
int acm;
cin >> H >> W >> N;
(N%H ==0) ? acm = 100 * H + (N / H) : acm = 100 * (N % H) + (N / H) + 1;
result.push_back(acm);
}
for (vector<int>::iterator it = result.begin(); it != result.end(); it++)
cout << *it << "\n";
return 0;
}
Leave a comment