Acm_Hotel 문제 풀기

2018, May 06    

백준에 있는 Acm_Hotel 풀어보았다. 문제링크

층이 x 일 경우 (x * n )번째 손님은 (x * n) / x 번째 방에 숙박하게 된다.
(x * n ) + 1번째 손님은 ((x*n)+1 / x ) +1 번째 방에 숙박하게 된다.
n 번째 손님은 n % (x +1) 층에 숙박한다.

void acm_hotel(int h, int w, int n)
{
	int mulStd = 1;
    // 몇 번째 방인지 구한다. 
    //  x * 건물높이 가 n보다 작음을 만족하는 최대의 x를 찾으면 된다.
	while (n > mulStd*h)
	{
		mulStd++;
	}

	int idxRoom = mulStd;
    // 층수를 구한다.
	int hOfRoom = n % h;
	if (hOfRoom == 0)
		hOfRoom = h;

	if (idxRoom >= 10)
		printf("%d%d", hOfRoom, idxRoom);
	else
		printf("%d0%d", hOfRoom, idxRoom);
}