백준 문제풀이/수학(Math)

백준 온라인 저지 - ACM호텔(#10250) 파이썬

Itscool 2021. 7. 30. 13:52

 

문제설명

이 문제의 핵심은 경우의 수를 잘 나누는 것입니다. 호텔에 온 순서대로 1)가까운 호실, 2) 낮은 층을 배정합니다. 101, 201, 301..102, 202, 302.. 의 형태로 배정이 되겠죠. 먼저 여러 개의 테스트케이스를 받기 때문에 for문을 활용하여 H, W, N을 테스트케이스 배열에 저장합니다. 그 다음, N번째로 온 손님이 머물 층과 호수를 따로 구해야 합니다. 먼저 층은 N을 H로 나눈 나머지가 될 것입니다. 단, 나머지가 0이라면 N은 H가 되어야 합니다. 호실의 경우 N을 H로 나눈 몫이 됩니다. 이제 하나의 문자열에 층과 호수를 합쳐서 방 번호를 출력하면 되는데, 호수가 9 이하라면 층과 호수 사이에 0을 삽입해야 합니다. 

 

ACM호텔(#10250) 파이썬 코드

t = int(input())
hight = []
width = []
number = []

for i in range(t):
  h, w, n = map(int, input().split())
  hight.append(h)
  width.append(w)
  number.append(n)

for i in range(t):
  if number[i] % hight[i] == 0:
    room_number = number[i] // hight[i]
    room_hight = hight[i]
    
  else:
    room_number = number[i] // hight[i] + 1
    room_hight = number[i] % hight[i]

  if room_number >= 10:
    print("%d%d"%(room_hight, room_number))
  else:
    print("%d0%d"%(room_hight, room_number))