문제
https://www.acmicpc.net/problem/10250
소스코드
#include <iostream>
using namespace std;
int main(void) {
int T;
cin >> T;
for (int t = 0; t < T; t++) {
int H, W, N;
cin >> H >> W >> N;
int num = (N-1) / H;
int floor = N - num * H;
int me = 1 + num + 100 * floor;
cout << me << endl;
}
}
코드설명
0. 문제를 파악해보면 101, 201, ... , h01, 102, 202, ..., h02, 103, 203, ..., h03, ..., hw 가 배정 순서임을 파악할 수 있다. (=1호부터 1층부터 꼭대기까지 채워지고, 다음은 102호부터 꼭대기층의 2호까지 채워지고, 마지막에는 1층의 w호부터 꼭대기층의 w호까지 채워진다.)
1. num은 XX이다. 앞에 몇 개의 호가 채워졌는지 알아보려면 N을 H로 나눈 몫을 보면 된다. 그러나 만약 6층까지 있는 건물에 6번째 손님이 들어오는 경우(=N/H가 나누어 떨어지는 경우)를 고려하여 num을 (N-1)/H 로 계산하였다.
2. floor는 YY 또는 Y이다. N에서 num*H를 빼주면 floor를 구할 수 있다.
3. me는 N번째 손님이 부여받는 방 번호이다. 방 호수는 1부터 시작하므로 num+1 에다가 100*floor를 더해준다.
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++] 백준 1181번 단어 정렬 :: seoftware (0) | 2020.03.13 |
---|---|
[C++] 백준 11053번 가장 긴 증가하는 부분 수열 :: seoftware (0) | 2020.03.13 |
[C++] 백준 10814번 나이순 정렬 :: seoftware (0) | 2020.03.13 |
[C++] 백준 1193번 분수찾기 :: seoftware (0) | 2020.03.13 |
[C++] 백준 1011번 Fly me to the Alpha Centauri :: seoftware (0) | 2020.03.07 |
댓글