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