
n번째 손님이 오면 어떤방에 배정할지를 결정하는 문제이다..
n번째 손님은 왼쪽아래부터 방을 배정받으며, 예를들어, 첫 번째 손님은 101호, 두 번째 손님은 201호, 세 번째 손님은 301호에 배정하는식으로 이어진다. 01호 방이 꽉차면 02호방에 배정받게 되는데, 예를들어 일곱번째 손님은 102호에 배정받게 된다.
// 아래의 코드는 dev c++환경에서 동작됩니다.
// visual studio에서는 bit/stdc++.h가 기본적으로 없기 때문에
// 정삭적인 작동이 되지 않을 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int t, h, w, n;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> t;
while(t--)
{
cin >> h >> w >> n;
if(n % h == 0)
{
cout << h * 100 + n / h << "\\n";
}
else
{
cout << (n % h) * 100 + (n / h) + 1 << "\\n";
}
}
return 0;
}
나머지와 나누기를 잘 활용한다면 그렇게 어렵지는 않은 문제이다. 그럼에도 불구하고 정답률이 2024년 기준으로 33%인 것을 볼 수 있는데, 대부분이 나누어 떨어졌을 때의 예외처리를 예상하지 못했기 때문인 것 같다.
이 문제 말고도 나머지 연산을 활용하는 문제 중에 정답률이 낮은 문제들을 목격할 수 있는었데, 아마도 나누어 떨어졌을 때의 예외처리를 하지 않았기 때문이라 추측된다.
앞으로도 나머지 연산을 활용할 때는 항상 나누어 떨어졌을 때도 예상된 값이 나오는지 잘 생각해야겠다.