백준 알고리즘 10250번 ACM 호텔, 파이썬
이번 문제는 백준 알고리즘의 10250번 ACM 호텔이다. 파이썬으로 풀어보았다.
그러니까 요약해보면, 손님들이 걷는게 귀찮으니까 많이 안걸어도 되는 방을 선호하기 때문에, 선착순으로 거리가 가까운 방을 배정하려고 하는 것이다.
엘리베이터와 제일 가까운쪽이 1호이고 먼쪽이 호텔의 길이 W호이다.
방의 호수는 호텔의 층 H와 W로 이루어진다.
그럼 문제를 파 보자.
# 조건 1. 입력은 첫째줄에 테스트 케이스의 수, 두번째 줄에, 층의 높이, 한층에 있는 방의 수, 배정 할 손님의 수가 주어진다.
# 조건 2. 출력은 몇 호에 마지막 손님이 배치되는지이다.
문제에 대한 내 생각이다.
그 전에, 나는 이거 문제 보자마자 생각한게, 대체 W는 왜 필요한거지? 라는 의문이였다.
어차피 문제 조건에 H*W 보다 사람의 수는 적다고 조건에 나와있고, 방 배정하는데 필요한 인수는 H면 되기 때문이다.
그렇게 생각을 했다.
# 생각 1. 1번에 나온 예제를 잘 보면, 402호에 배정되었다는것은, 10명을 최대 층 H(6)으로 나눈 나머지이다.
# 생각 2. 402호에 배정된 걸 다시 또 보면, 호수는 10명을 최대 층 H(6)로 나눈 몫에 1을 더한 값이다.
# 생각 3. 그럼 W는 필요가 없다.
이렇게 생각하고 코드를 짜 봤다.
try_num = int(input())
for i in range(try_num):
H, W, P = map(int, input().split())
if P % H == 0:
floor = H
Num = int(P/H)
else:
floor = P % H
Num = int(P/H) + 1
if Num >= 10:
print(str(floor) + str(Num))
else:
print(str(floor) + '0' + str(Num))
나는 그냥 이렇게 짰다.
floor는 층이고, Num은 방 번호이다. 저렇게 조건문을 나눈 이유는
나눠떨어지는경우 0이나와서 0층으로 배정되기 때문이다. 그래서 그 경우는 그냥 최대 높이를 배정해 준다.
그리고 마지막 조건의 경우는 10호가 넘어가면 410 이렇게 붙지만,
10호가 안되는 경우는 49< 이런식으로 붙게 되니까, 중간에 0을 추가 해 줬다.
W는 대체 왜 받아야 하는 걸까?
다른 사람 코드를 한번 봐야겠다.
문제 출처
https://www.acmicpc.net/problem/10250
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 2798번 블랙잭, 파이썬 (0) | 2020.05.01 |
---|---|
[백준 알고리즘/python] 백준 2775번 부녀회장이 될테야, 파이썬 (0) | 2020.04.03 |
[백준 알고리즘/python] 백준 2869번 달팽이는 올라가고 싶다, 파이썬 (0) | 2020.03.27 |
[백준 알고리즘/python] 백준 1193번 분수찾기, 파이썬 (0) | 2020.03.25 |
[백준 알고리즘/python] 백준 2292번 벌집, 파이썬 (0) | 2020.03.23 |
댓글