Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

개발자 일기장.

백준 10250문제. 본문

취업/Algorithm.

백준 10250문제.

Azderica 2020. 2. 12. 15:54

ACM 호텔

 


Problem?

ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.

문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접한 두 방 사이의 거리는 같은 거리(거리 1)라고 가정하고 호텔의 정면 쪽에만 방이 있다고 가정한다.

 

이 문제는 수학 문제임을 알 수 있다.

 

Input

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W). 

H: 건물 높이 / W: 건물 폭 / N: 사람 수

 

Output

프로그램은 표준 출력에 출력한다. 각 테스트 데이터마다 정확히 한 행을 출력하는데, 내용은 N 번째 손님에게 배정되어야 하는 방 번호를 출력한다.

 

Solution

수학적 사고로 풀기.

 

가정

H, W, N : 건물의 높이, 건물의 폭, 손님의 수

y, x : y는 건물의 높이 호수 / x는 건물의 폭 호수

답은 yyxx / yxx 형태.

 

y와 x는 건물의 높이에 영향을 받는다.

 

사람의 수가 위에서 부터 천천히 올라가므로

y = N % H 으로 세울 수 있다.

이때 y=0이면) 0xx호실은 없으므로 이 경우는 y = H가 된다.

 

마찬가지로 x를 풀 수 있다.

x = N / H + 1 로 풀 수 있다.

그런데 N % H == 0인 경우는 최고 높이에 있는 경우이므로 이 경우는 1을 빼준다.

 

if) N = 3, H=3 -> 301에 들어와야하는데 / N%H인 경우를 생각하지 않으면 302가 되므로 빼줘야 한다.

301 302
201 202
101 102

 

이와 같은 방법으로 문제를 풀 수 있다.

 

Code

#include	<iostream>
using namespace std;

int main(void) {
	int T = 0;
	int H = 0, W = 0, N = 0;
	int x, y;

	cin >> T;
	for (int i = 1; i <= T; i++) {
		scanf("%d %d %d", &H, &W, &N);

		y = N % H;
		if (y == 0) 
			y = H;
		y *= 100;

		x = N / H + 1;
		if (!(N % H))
			x -= 1;

		cout << y + x << endl;
	}

	return 0;
}

 


x 조건을 생각을 못해서 몇번 틀렸다.

 

'취업 > Algorithm.' 카테고리의 다른 글

백준 11053문제.  (0) 2020.02.23
백준 1074문제.  (0) 2020.02.22
백준 11650문제.  (0) 2020.02.15
백준 1912문제.  (0) 2020.02.11
백준 2156문제.  (0) 2020.02.09