Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [10250] - ACM 호텔

yaebb_82 2022. 8. 25.

 

문제

 

 

 

 

작성한 코드

import sys

input = sys.stdin.readline

T = int(input())

for i in range(T):
    H, W, N = map(int, input().split())
    
    number = (N//H)+1
    floor = N%H
    
    if (N%H) == 0:
        number = N//H
        floor = H
        
    print(f"{floor*100+number}")

- sys.stdin.readline을 input에 할당하여 사용한다.

- input()으로 문자를 입력받고 int형으로 형변환하여 T에 저장한다. (T는 테스트 데이터 개수)

- for i in range(T): T만큼 반복문 for문을 돌린다.

- 반복문이 돌아갈 때마다 input()으로 문자를 입력받고, split()으로 구분한 뒤, int형으로 형변환하여 map()으로 H, W, N에 각각 할당해준다. (H = 층수, W = 방 수, N = 몇 번째 손님)

- 일반적으로 N을 H로 나누었을 때 몫은 호수(101, 102, 103,...)와 연관이 있다. 몫이 0일 때는 1호이고, 1일 때는 2호이기 때문에 N//H 값에 +1을 해준다. 해당 값은 number에 저장한다.

- 그리고 N을 H로 나누었을 때 나머지는 층수(101, 201, 301,...)와 연관이 있다. 해당 값은 floor에 저장한다.

- if (N%H) == 0: 하지만 N을 H로 나누었을 때 0이 나오는 경우에는 다르기 때문에 따로 조건문 if문으로 지정해준다.

- 이 경우에는, N을 H로 나눈 몫을 바로 number에 저장하고, H의 값을 floor에 저장한다.

- 최종적으로 print()로 출력할 때는, f-string을 사용하였고, 방번호는 101, 1201, 305, .. 이런 식으로 구성되어있기 때문에 floor에 100을 곱해주고, 거기에 number를 더해준다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [2839] - 설탕 배달  (0) 2022.08.25
백준 [2775] - 부녀회장이 될테야  (0) 2022.08.25
백준 [2869] - 달팽이는 올라가고 싶다  (0) 2022.08.24
백준 [1193] - 분수찾기  (0) 2022.08.24
백준 [2292] - 벌집  (0) 2022.08.24

댓글