이 문제를 처음 봤을 때가 생각이 난다. 분명 되게 쉬운 문제 같았는데 처음에 좀 틀리면서 풀었던 기억이 난다. 근데 그래도 백준 푼 경험이 좀 늘어서 그런지 어떻게 풀어야할지가 바로 보였다. 이 문제를 처음 풀었을 때에는 구현으로 아예 배열 자체를 새로 만들어서 만들었던 기억이 난다. 호수와 층 개념 자체를 반대로 생각하고 풀면 간단하게 풀 수 있는 문제다. 근데 시플플의 문제인지 조건을 자세히 확인하지 않는 나의 문제인지 또 틀렸다...
# include "iostream"
using namespace std;
int main(void){
int T = 0;
cin>>T;
for (int i = 0; i < T; i++){
int H, W, N, cnt = 1;
cin>>H>>W>>N;
cnt += N / H;
H = N % H;
if (cnt > 10){
cout<<H<<cnt<<endl;
}
else{
cout<<H<<0<<cnt<<endl;
}
}
}
예시는 모두 정답으로 나오는데 도대체 뭐가 문제인지 감이 안 잡혀서 문제로 돌아가 보았다. 사실 처음에는 시플플에 대한 의심으로 이거 혹시 스트링으로 받아서 출력을 잘못 인식하는건가 싶어서 코드를 좀 고쳐 보았다.
# include "iostream"
using namespace std;
int main(void){
int T = 0;
cin>>T;
for (int i = 0; i < T; i++){
int H, W, N, cnt = 1;
cin>>H>>W>>N;
cnt += N / H;
H = N % H;
cout<<(H * 100 + cnt)<<endl;
}
}
이런걸로 해결되는 문제는 아니었다. 백준이 진짜 멍청한건가 생각하고 있었는데 엣지케이스를 생각하지 않은 것이 문제였다. 그래서 엣지 케이스가 나오는걸 정리하고 나니 잘 해결되었다. 근데 엣지 케이스에 대한 대비를 위해서 예시를 좀 더 많이 들어주면 좋을 것 같다...
정답률이 점점 낮아지는 내 계정이 안타깝다. 최종 코드는 아래와 같다. 0호라는 개념이 없기 때문에 이 케이스를 분류해 주었어야만 했다.
# include "iostream"
using namespace std;
int main(void){
int T = 0;
cin>>T;
for (int i = 0; i < T; i++){
int H, W, N, cnt = 1, temp = 0;
cin>>H>>W>>N;
cnt += N / H;
temp = N % H;
if (N % H == 0){
cnt --;
temp = H;
}
cout<<(temp * 100 + cnt)<<endl;
}
}