본문 바로가기

알고리즘/백준알고리즘

[백준 알고리즘/Python3] 10250 ACM호텔

문제이해 

 

 

위와 같은 방식으로 방에 손님이 들어옵니다.

 

 

먼저 층을 구하려면 N%H를 했습니다.

 

들어온 값을 으로 나누면 나머지값은 가로 값이 됩니다.

가로값은 곳 입니다.

 

여기서 들어온 값이 층과 같다면 (= N%H ==0)이라면

은 h가 됩니다.

 

세로값 즉, 동수를 구하려면 N//H를 해야합니다.

세로값은 맨 꼭대기 층을 제외하고 N//H -1 값입니다.

 

맨 꼭대기층은 N//H값이 나옵니다.

 

예를 들어) N = 11인 값이 들어오면 

N//H = 1.83.. 으로 절대 2값이 넘지 못합니다.

하지만 N = 11인 손님은 2동에 들어가야 하죠

 

그래서 +1를 합니다.

 

하지만 N = 12인 값이 들어오면

N//H = 2가 되므로 정확하게 602호에 들어가게 됩니다.

꼭대기 층만 특별하게 if문을 주면 되었습니다.

 

 

코드

t = int(input())
for i in range(t):
    h,w,n = map(int,input().split())
    #h = 세로, w = 가로, n = 몇 번째 손님
    if(n % h):
        floor = n % h
    else:
        floor = h

    if(n % h):
        room = (n//h) + 1
    else:
        room = (n//h)

    if(room >= 10 ):
        print("%d%d" % (floor, room))
    else:
        print("%d%02d" % (floor, room))

python 포메팅으로 만약 방의 동수가 2자리가 넘어가면

 

그냥 출력하면 되고

 

1자리이면 앞에 0을 붙혀서 출력하도록 했습니다.

728x90