baekjoon 10250

윤동환·2022년 12월 18일
0

Algorithm

목록 보기
2/54
post-thumbnail

ACM 호텔

내가 작성한 코드

#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;
}

고민한 사항

  1. 방 호수의 앞 번호와 뒷번호의 관계를 생각했다.
    -> 엘리베이터와 가까운 호수번호를 요구하므로 n번째를 높이로 나눈 나머지 값이 해당 호수번호의 앞 번호가 될것이다. 하지만 나머지가 딱 떨어지는 경우는 n의 소인수분해에 h가 포함되는 경우이므로 해당경우는 호수 번호의 앞자리에 h를 넣어주는 예외처리를 하였다.
  2. 뒷 번호는 높이 수만큼 몇번 뒤로 미루어졌는가를 계산하기 위해 n / h를 통해서 몫의 값을 구하였다. 하지만 몫이 계산되는 특성상 1을 더해주었고, 만일 h와 n이 같을 경우 같은 라인에 위치하겠지만 몫이 1생기므로 나머지가 0일경우 예외처리 해주었다.
  3. n은 h * w보다 작거나 같으므로 w를 고려할 필요는 없었다.
profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글