알고리즘/백준 문제풀이

[백준] 10250 ACM호텔 파이썬 풀이 (기본 수학1)

자바칩 프라푸치노 2021. 6. 20. 01:08

 

코드

num = int(input())
for i in range(num):
    H,W,N = map(int,input().split())
    count = 1
    while N>H : 
        N = N-H
        count += 1 #방 호수

    # print(N, count)
    if count<10:
        print(f'{N}0{count}')
    else:
        print(f'{N}{count}')

풀이

짱 쉬운 문제다

1호가 없어질때까지(h까지) 밑에서 부터 쫙 주고

2호가 없어질때까지 밑에서 부터 쫙 주고

하면 된다

 

손님이 H보다 적은 번째에 왔다면

예를 들어 H가 6인데 손님이 5번째 손님이면 그냥 501호를 주면된다

그런데 손님이 7번째가 되면 102호로 2호라인으로 넘어가야한다

그러니까 N이 H보다 클때 H를 빼면서 1호->2호->3호 .. 이렇게 넘어가야한다

손님이 20번째 손님이면

6번째 손님까지 1호/ 7~12번째 손님까지 2호/ 13~18번째 손님까지 3호라인/ 19~ 번째 부터 4호라인에 가야하고

19번부터 4호라인 시작이므로 20번째 손님은 204호에 가야한다

여기서 치면 N은 2가 남아있을 것이고 count는 4가 되어있겠다.

count가 10이하라는 것은 방 호수가 9호까지라는 뜻이다.

1자리 수일때는 109 108호 처럼 0이 중간에 붙어야하니까 저렇게 출력했고

2자리 수이면 그냥 111호 처럼 출력하면 되니까 저렇게 if문으로 나눠줬다.

728x90