BOJ. 10250

Opusdeisong·2022년 12월 23일
0

백준 Class2

목록 보기
3/31


#BOJ10250

ACM 호텔

이 문제를 처음 봤을 때가 생각이 난다. 분명 되게 쉬운 문제 같았는데 처음에 좀 틀리면서 풀었던 기억이 난다. 근데 그래도 백준 푼 경험이 좀 늘어서 그런지 어떻게 풀어야할지가 바로 보였다. 이 문제를 처음 풀었을 때에는 구현으로 아예 배열 자체를 새로 만들어서 만들었던 기억이 난다. 호수와 층 개념 자체를 반대로 생각하고 풀면 간단하게 풀 수 있는 문제다. 근데 시플플의 문제인지 조건을 자세히 확인하지 않는 나의 문제인지 또 틀렸다...

# 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;
    }
}
profile
Dorsum curvatum facit informaticum.

0개의 댓글