BJ10250_ACM_호텔_python
1. 문제링크
https://www.acmicpc.net/problem/10250
2. 풀이 전 계획과 생각
< 정보 정리 >
1) 입력값: 테스트 케이스 T, Height H, Width W, Guest number G
2) 출력값: 방 호수 N
3) 제약조건: 1 <= H,W <= 99, 1 <= G <= H x W
4) 예외케이스: 없음
< 공통 로직 >
- G > H 일때는 H 값을 빼줄때 방 호수를 올려준다.
- G < H 일때는 G, H 차이값 만큼 층수를 올려준다.
3. 풀이
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()
4. 풀이하면서 막혔던 점과 고민
이 문제는 특별히 막힌 점은 없었는데 다만 좀 더 최적화 할 수 있지 않았나 하는 생각이 들었다. 예를 들어 아래 로직을 보면
while height < guest_num :
room_num += 1
guest_num -= height
guest_num
에 height
값을 한번씩 빼주는데 guest_num
이 적은 편일때는 상관 없지만 엄청 큰 숫자였을때는 처리하는데 오래 걸릴 것 같다는 생각이 들었다.
5. 풀이 후 알게된 개념과 소감
- 번에서 언급된 이슈에 대해 고민해본 결과,
while height < guest_num :
multiplier = guest_num / height
room_num += 1 * multiplier
guest_num -= height * multiplier
식으로 처리하면 height를 매번 차감하는 것보다 배수를 사용하는 방법이 큰 값에서 좀더 빨리 처리될 수 있지 않을까 싶다.
Author And Source
이 문제에 관하여(BJ10250_ACM_호텔_python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@area363/BJ10250ACM호텔python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)