코드
#include <iostream>
#include <string>
using namespace std;
int tc, a[3];
int main() {
cin >> tc;
while(tc--) {
string res;
fill(a, a + 3, 0);
for(int i = 0; i < 3; i++) cin >> a[i];
int floor = (a[2] - 1) % a[0] + 1; // 0 기반으로 구하기
int room = (a[2] - 1) / a[0] + 1; // 0 기반으로 구하기
res = to_string(floor) + (room < 10 ? "0" : "") + to_string(room);
cout << res << '\n';
}
return 0;
}
풀이
1기반으로 해결하려고 하다가 엣지 케이스에서 털리던 중에, 0기반으로 해결하면 된다는 사실을 알았다. 0기반 인덱싱을 사용하면 인덱스 계산이 단순해지고, 복잡한 조건 없이도 문제를 해결할 수 있다. 예를 들어, (N - 1) % H나 (N-1) / H와 같은 계산을 통해 쉽게 층수와 방 번호를 구할 수 있으며, 1기반 인덱싱을 사용할 때 발생할 수 있는 엣지 케이스(특히 나머지가 0인 경우)를 신경 쓸 필요가 없다. 특히 모듈러 연산에 있어 유용한 방법인 듯 하다.
'백준' 카테고리의 다른 글
[백준] 1213번 팰린드롬 만들기 C++ 코드 (0) | 2024.09.04 |
---|---|
[백준] 14501번 퇴사 C++ 코드 (0) | 2024.08.26 |
[백준] 7568번 덩치 C++ 코드 (0) | 2024.08.26 |
[백준] 4781번 사탕가게 C++ 코드 (0) | 2024.08.23 |
[백준] 2294번 동전 2 C++ 코드 (0) | 2024.08.23 |