내가 작성한 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
int t, h, w, n;
cin >> t;
for (int i = 0; i < t; ++i) {
cin >> h >> w >> n;
int hr = n % h;
int wr = n / h + 1;
if (hr == 0) {
hr = h;
wr -= 1;
}
cout << hr;
if (wr < 10) {
cout << '0' << wr << endl;
} else {
cout << wr << endl;
}
}
return 0;
}
- 방 호수의 앞 번호와 뒷번호의 관계를 생각했다.
-> 엘리베이터와 가까운 호수번호를 요구하므로 n번째를 높이로 나눈 나머지 값이 해당 호수번호의 앞 번호가 될것이다. 하지만 나머지가 딱 떨어지는 경우는 n의 소인수분해에 h가 포함되는 경우이므로 해당경우는 호수 번호의 앞자리에 h를 넣어주는 예외처리를 하였다.- 뒷 번호는 높이 수만큼 몇번 뒤로 미루어졌는가를 계산하기 위해 n / h를 통해서 몫의 값을 구하였다. 하지만 몫이 계산되는 특성상 1을 더해주었고, 만일 h와 n이 같을 경우 같은 라인에 위치하겠지만 몫이 1생기므로 나머지가 0일경우 예외처리 해주었다.
- n은 h * w보다 작거나 같으므로 w를 고려할 필요는 없었다.