백준 10250_ACM 호텔.cpp

소스코드

#include <iostream>
using namespace std;
int main(){
	int NumTestCases;
	cin >> NumTestCases;
	for(int i = 0; i < NumTestCases; i++){
		int H, W, idx;
    cin >> H >> W >> idx;
    int a = 1;
    while(1){
        if(H >= idx){break;}
        idx -= H;
        a++;
    }
    cout << idx*100 +  a << endl;
	}
    return 0;
}
  1. 변수
    int NumTestCases : 테스트케이스 개수
    int H, W, idx : 높이, 너비, 몇번째 손님
    int a : 호수의 일의 자리
  1. 알고리즘
    1) 각 층에 1번방은(ex.101, 201 등등) 손님들이 제일 선호하는 방임으로 가장 먼저 자리가 차게 되고, 그 다음으로 각 층에 2번방, 3번방 이런식으로 늘어나게 된다.
    2) 그러므로 높이(H)가 몇번째 손님(idx)보다 커지거나 같아질때까지 idx -= H를 하고 a++를 함으로써 a번째 방을 처분한다.
    3) 마지막 idx*100 + a를 함으로써 idx번째 손님의 방을 출력해준다.
  1. 배운점
    x
  1. 아쉬운점&느낀점
    문제가 길이에 쫄 필요가 없다는 것을 다시 한번 느꼈다. 이 문제가 왜 정답률이 30퍼센트인지 이해가 안간다.

좋은 웹페이지 즐겨찾기