Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

xcc1

백준 10250:ACM 호텔 본문

백준

백준 10250:ACM 호텔

xcc1 2021. 10. 28. 21:12

https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

 

전체코드

T = int(input())


for i in range(T):
    H, W, N = map(int, input().split())
    h = 0
    w = 1
    while True:
        if N > H:
            w += 1
            N -= H
        elif N == 0:
            break
        else:
            h += 1
            N -= 1
                   
    room_num = h*100 + w
    print(room_num)

 

 

규칙

1. 층부터 늘어난다. 101 > 201 > 301 > 401 > ...

2. 세로로 한 층이 다 차게되면 1층부터 옆방으로 넘어간다. 102 > 202 > 302 > ....

 

 

반복문 구간

for i in range(T):
    H, W, N = map(int, input().split())
    h = 0
    w = 1
    while True:
        if N > H:
            w += 1
            N -= H
        elif N == 0:
            break
        else:
            h += 1
            N -= 1

인원수(N)이 층수보다 크게 되면 방의 뒷자리가 바뀐다. 

즉 N > H면 w(방 호수의 뒷자리)가 +1, 그대신 모든 층수에서 옆에 칸이 다 찼으니 남은 인원수가 그만큼 빠진다. (N -= H)

 

남은 인원이 0명이라면 while 반복문 끝(break),  그렇지 않다면 남은 인원수 만큼 h(방 호수의 앞자리)가 더해지고 그만큼 인원을 뺀다.

 

글쓰다보니 더 줄일 수도 있을 것 같아서 줄여봤다.

 

T = int(input())


for i in range(T):
    H, W, N = map(int, input().split())
    h = 0
    w = 1
    while True:
        if N > H:
            w += 1
            N -= H
        else:
            h = N
            break
                   
    room_num = h*100 + w
    print(room_num)

 

 

'백준' 카테고리의 다른 글

백준 1978번:소수찾기  (0) 2021.11.03
백준 2839번:설탕배달  (0) 2021.10.30
백준 1193번  (0) 2021.10.27
백준 문제별풀이 7단계(파이썬)  (0) 2021.09.04
백준 단계별 풀이 6단계 (파이썬)  (0) 2021.09.02