본문 바로가기

C언어 백준 문제 풀이

백준 10250번 ACM 호텔

728x90

10250번: ACM 호텔 (acmicpc.net)

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

 

문제 요약: 손님들은 호텔 정문으로부터 가장 짧은 거리에 있는 방을 선호한다. 호텔이 직사각형, 각 층에 W개의 방이 있는 H층 건물이라고 가정한다. (1 <=H, W<=99) 엘리베이터는 가장 왼쪽에 위치한다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시하며 모든 인접한 두 방 사이의 거리는 1로 통일함과 동시에 호텔의 정면 쪽에만 방이 있다고 가정한다.  초기에는 모든 방이 비어있으며, N번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램을 작성하라. 프로그램의 입력은 T개의 테스트 데이터로 입력의 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N 세 정수를 포함하고 있으며, 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다. 

 

 

문제 풀이: 우선 입력된 N(손님의 순서)만큼 층수와 방수의 카운트를 세준다. 이때 중요한 점은, 헷갈리면 안된다는 것이다. 문제를 제대로 이해했다면, 방 번호가 작을수록 손님들이 선호하는 방이라는 사실을 알고 있을 것이다. 층수가 최고 높이까지 올라갔고, 그 번호의 방이 더 이상 존재하지 않으면 다음번 방을 최저층부터 다시 배정하면 된다. 우선 처음에 2차원 배열(입력 데이터와 동일한 크기로 할당)을 동적 할당하였고, 1차원 배열을 다시 동적 할당(손님들 방을 저장해야 하므로, 호텔이 99층을 넘지 않는다는 가정하에 천 자리까지의 숫자를 넣을 수 있을 정도의 크기로 할당) 했다. 따로 문자열 배열을 만들어서 정수를 문자열로 변환하여 저장하였고, 저장한 문자열을 동적 할당한 배열에 문자열 라이브러리 함수를 이용해 저장하였다.  

 

 

 

 

http://colorscripter.com/s/70Zr40T

 

공유된 코드 - Color Scripter

저작권자 : inryureal@tistory.com 삭제 요청 코드 설명 : C언어 백준 10250번 ACM 호텔

colorscripter.com

 

728x90

'C언어 백준 문제 풀이' 카테고리의 다른 글