푸르미르

[python]10250.ACM 호텔 본문

Baekjoon Online Judge

[python]10250.ACM 호텔

((•_•)) 2021. 1. 12. 14:23

 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.

코드를 짠 아이디어를 설명하겠다. 

해당 호텔의 총 층수:h, 호텔의 총 호수:w, 몇 번째 손님의 방 호수를 출력 할 지:n가 주어진다. 

 

백준

만약 6 12 10 이 주어진다면 10번째 손님의 방은 402호이다. 또 6 12 6 일때에는 601호로 배정해준다.  손님들에게 온순서대로 방을 배정해 줄 때 방 호수의 우선순위를 보면 

첫번째 손님은 101호, 두번째 손님에겐 201호, 102호는 7번째 손님에게, 202호는 8번째, 302호는 9번째, 402호는 10번째 손님에게 배정해준다.

이중 for문으로 풀면 풀수 있겠지만 시간초과가 날까 걱정한 나머지 다른방법을 찾기로 했다.

 

10=6*1+4  이렇게 나타낼 수 있는데, 이때 몫+1은 방 호수를 나타낸다. 나머지는 층수를 나타낸다. 그리하여 402호가 나올 수 있고 몫이 없는 경우 12=6*2+0 인데 이 경우 12=6*1+6으로 나타낼 수 있다. 결국 몫+1이 방 호수 이므로 2가 호수이고 층수가 6인 602호가 된다.  이것을 이용하여 코드를 짠다면,

 

1
2
3
4
5
6
7
8
for i in range(int(input())):
    h,w,n=map(int, input().split())
    a=int(n/h)+1 #호수 지정(몫+1)
    b=n%h #층수 지정 (나머지)
    if b==0:
        a-=1
        b=h
    print(b*100+a)
cs

www.acmicpc.net/problem/10250

'Baekjoon Online Judge' 카테고리의 다른 글

[python]1929.소수 구하기  (0) 2021.01.18
[python]10757.큰 수 A+B  (0) 2021.01.15
[python]2869.달팽이는 올라가고 싶다.  (2) 2021.01.10
[python]1193.분수찾기  (0) 2021.01.10
[python]10870.피보나치 수  (2) 2021.01.07