문제
https://www.acmicpc.net/problem/10250
풀이
먼저, 도착한 손님의 순서대로 방 배정을 하는 방법에 대해 이해를 해야합니다.
층(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 값을 층 수로 해줘야겠네요..!
소스코드
후기
도착한 손님의 순서대로 방 배정을 하는 방법에 대해 이해를 한 후, 층 수와 방 수를 어떻게 구해줄지 고민해보면 쉽게 풀 수 있는 문제인 것 같습니다.
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2839 설탕 배달 (Swift) (0) | 2023.01.26 |
---|---|
[BOJ] 백준 2775 부녀회장이 될테야 (Swift) (0) | 2023.01.24 |
[BOJ] 백준 2869 달팽이는 올라가고 싶다 (Swift) (0) | 2023.01.17 |
[BOJ] 백준 1193 분수찾기 (Swift) (0) | 2023.01.15 |
[BOJ] 백준 2292 벌집 (Swift) (0) | 2023.01.10 |