본문 바로가기

Problem Solving/백준

[백준/C++] 10250번 ACM 호텔


#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <math.h>
using namespace std;

int main() {
    int N;
    cin >> N;
    int stair, number, chung, bang, son;
    for(int i = 0; i < N; i++) {
        cin >> chung >> bang >> son;
        stair = son % chung;
        if(stair == 0) cout << chung;
        else cout << stair;
        
        number = ceil((double)son / chung);
        if(number >= 10)
            cout << number << endl;
        else cout << "0" << number << endl;
    }
}

손님은 greedy 알고리즘처럼 순차적으로 좋은 위치를 점하게 되므로

손님과 층 방으로 나누어 생각을 해보았을 때 손님이 오는 순서대로 자리를 배정해준다고 생각하면 N번째 오는 손님은 층의 개수로 알 수 있게 됩니다. 그래서 손님을 층으로 나누고 몫만큼을 방번호로 가져가고 나머지만큼을 층으로 받게됩니다.


문제: https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

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

www.acmicpc.net