https://www.acmicpc.net/problem/10250
1) 입력값: 테스트 케이스 T, Height H, Width W, Guest number G
2) 출력값: 방 호수 N
3) 제약조건: 1 <= H,W <= 99, 1 <= G <= H x W
4) 예외케이스: 없음
def find_acm_hotel_room():
t = int(input("Enter the number of test cases:"))
result = [];
for i in range(t):
height = int(input(f"{i + 1} Enter height: "))
if height > 99 or height < 1:
print("Height must be between 1 and 99 inclusive.")
return
width = int(input(f"{i + 1} Enter width: "))
if width > 99 or width < 1:
print("Width must be between 1 and 99 inclusive.")
return
guest_num = int(input(f"{i + 1} Enter number of guests: "))
if guest_num > height * width or guest_num < 1:
print("Guest number must be between 1 and height * width inclusive.")
return
room_num = 0
floor_num = 0
while height < guest_num :
room_num += 1
guest_num -= height
if guest_num > 0 :
room_num += 1
floor_num = guest_num
room_code = "0" + str(room_num) if room_num < 10 else str(room_num)
room = str(floor_num) + str(room_code)
result.append(room);
for i in result:
print(i)
find_acm_hotel_room()
이 문제는 특별히 막힌 점은 없었는데 다만 좀 더 최적화 할 수 있지 않았나 하는 생각이 들었다. 예를 들어 아래 로직을 보면
while height < guest_num :
room_num += 1
guest_num -= height
guest_num
에 height
값을 한번씩 빼주는데 guest_num
이 적은 편일때는 상관 없지만 엄청 큰 숫자였을때는 처리하는데 오래 걸릴 것 같다는 생각이 들었다.
while height < guest_num :
multiplier = guest_num / height
room_num += 1 * multiplier
guest_num -= height * multiplier
식으로 처리하면 height를 매번 차감하는 것보다 배수를 사용하는 방법이 큰 값에서 좀더 빨리 처리될 수 있지 않을까 싶다.