본문 바로가기

PS/백준

[BOJ] 백준 10250 ACM 호텔 (Swift)

반응형

문제

https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

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

www.acmicpc.net

풀이

먼저, 도착한 손님의 순서대로 방 배정을 하는 방법에 대해 이해를 해야합니다.
층(H) 수가 6, 방(W) 수가 3이라고 가정을 해보겠습니다.
101 -> 201 -> 301 -> 102 -> 202 -> 302 -> 103 -> ... -> 603
의 순서로 될 것입니다.

그렇다면 먼저 N번째 손님이 갈 층 수를 어떻게 구해야할까요?

층 수 구하기

층 수는 단순히 N % H로 구할 수 있습니다.
몫은 이미 꽉 차있는 층수이므로 나머지에 대해서만 신경쓰면 그것이 층 수가 될 것입니다.

하지만 한 가지 중요한 점은 N % H == 0이라면 0층이 되버리므로 N % H == 0일 때는 H층이 되어야 하겠군요!

방 수 구하기

층 수는 N % H == 0 ? N : N % H 로 구할 수 있었습니다.
방 수는 어떻게 구할까요?

방 수는 X축으로 채워나가지는 느낌이지 않으신가요??
따라서 방의 숫자는 N / H + 1이 될 것 입니다.
왜냐하면 1호부터 시작하기 때문에 + 1 을 해주었습니다.

그런데 N % H == 0 일 때는 어떨까요??
N / H 가 딱 나누어 떨어지기 때문에
101 -> 201 -> 302 -> 102 -> 202 -> 303...
이런식으로 나타날 것이에요

따라서 층 수를 구할 때와 마찬가지로 N % H == 0이라면 N / H 값을 층 수로 해줘야겠네요..!

소스코드

후기

도착한 손님의 순서대로 방 배정을 하는 방법에 대해 이해를 한 후, 층 수와 방 수를 어떻게 구해줄지 고민해보면 쉽게 풀 수 있는 문제인 것 같습니다.

반응형