[백준 10250번][Python/파이썬] ACM 호텔

공학도 Lee·2023년 2월 5일
0

백준 문제 풀이

목록 보기
12/63
post-custom-banner

1. 문제



출처: 백준 10250번 ACM 호텔

2. 풀이


방문하는 손님 순서대로 그림의 왼쪽 아래부터 오른쪽 위로 방을 배정해 주면 되는 문제이다.

방문하는 손님의 순서가 H의 배수, 즉 6의 배수라면 가장 높은 층 (6층)을 배정해 주게 된다.
그리고 나머지 호수 부분은 6으로 나눴을 때의 몫이 된다. (N//H)
손님의 순서를 6으로 나눴을 때의 몫이 10보다 작다면, 호수의 가운데 부분에 0을 넣어주면 된다.

ex) 여섯 번째 손님의 경우, 6으로 나눴을 때 몫은 1이고 나머지는 0이다.
호수는 601호를 배정받게 된다.

손님의 순서가 6의 배수가 아닐 때에는, 6으로 나눴을 때의 나머지 값을 층으로 배정해 주게 된다.
이때에는, 6으로 나눴을 때의 몫에 1을 더해준 값이 나머지 호수 부분이 된다. (N//H + 1)
손님의 순서를 6으로 나눴을 때의 몫이 9보다 작다면, 호수의 가운데 부분에 0을 넣어주면 된다.

ex) 첫 번째 손님의 경우, 6으로 나눴을 때 몫은 0이고 나머지는 1이다.
호수는 101호를 배정받게 된다.

3. 소스코드


case = int(input())

for i in range(case):
    H,W,N = map(int,input().split())
    if N%H == 0:
        if N//H < 10:
            number = str(H)+'0'+str(N//H)
        else:
            number = str(H)+str(N//H)
    else:
        if N//H < 9:
            number = str(N%H)+'0'+str(N//H+1)
        else:
            number = str(N%H)+str(N//H+1)
    print(number)

4. 그 외


처음 풀었을 때에는, 6층이 아닌 손님들 조건문을 N//H < 10으로 똑같이 했다가 여러 번 틀렸던 경험이 있다.

profile
이창민, Changmin Lee
post-custom-banner

0개의 댓글