Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Programming
- Unity
- c++
- guide
- Basic
- 재귀
- loop
- UE5
- dynamic
- 프로그래밍
- dfs
- Unreal Engine 5
- Algorithm
- parameter
- W3Schools
- python
- C#
- 문제풀이
- w3school
- 기초
- Material
- github
- 오류
- String
- Class
- 파이썬
- DP
- 시작해요 언리얼 2022
- Tutorial
- 백준
Archives
- Today
- Total
행복한 개구리
백준 21.12.06. 10250번 - ACM호텔 본문

import sys
import math
t = int(sys.stdin.readline())
for _ in range(0, T):
h, w, n = map(int, sys.stdin.readline().split())
roomNumber = math.ceil(n/h)
if n%h == 0:
floor = h
else:
floor = n%h
print(str(floor) + str(roomNumber).zfill(2))
- 우선 연산속도를 줄이기 위한 sys모듈과 ceil(소수점 올림처리)을 사용하기 위해 임포트해줍니다.
- 그리고 연산을 몇 회 돌릴건지 입력받기 위한 t를 작성하고 t만큼 실행할 수 있도록 반복문을 작성해줍니다.
- 반복문 내에서는 문제의 내용을 작성해줍니다. 우선 높이(h), 너비(w), 손님의 수(n)를 입력받을 수 있도록 작성해줍니다.
- 그리고 문제의 내용대로라면 손님들은 (101)부터 시작해서 (h01)번까지 차례대로 들어간 후 102에 들어가는 식으로 왼쪽 세로줄의 아래부터 위로 차례대로 채워갈 것입니다.
- 따라서 방번호는 손님 수를 높이로 나눈 값의 올림처리를 하면 구할 수 있습니다.
- 다음으로는 층을 구해야하는데, 이것은 나머지를 이용해 구하면 됩니다.
- 6층건물의 10번째 손님이라면 "10%6 = 4"이므로 4층에 머무는 상태가 됩니다.
- 하지만 여기서 예외가 발생하는데, 나머지가 없이 딱 딸어지는 값이라면 손님은 가장 높은 층에 머물고 있다는 점입니다. (6번째손님은 6층에 묵습니다. => 6%6 = 0)
- 따라서 분기를 나누어 나머지가 0이라면 최고층의 수를 출력하도록 예외처리를 해주면 됩니다.
- 마지막으로 층계와 방 번호를 구했으니 둘을 str형식으로 형변환 시켜줍니다.
- 여기서 방 번호는 102, 103 ... 113 이런식으로 진행되기 때문에 str의 zfill함수를 사용해줍니다.
- str(roomNumber).zfill(2)는 모자란 자리에 0을 넣어값을 두자리 수로 표현한다는 뜻입니다.
- 1 => 01, 2 => 02, 11 => 11...
'Algorithm > BaekJoon' 카테고리의 다른 글
| 백준 21.12.07 2839번 - 설탕 배달 (0) | 2021.12.07 |
|---|---|
| 백준 21.12.06. 2775번 - 부녀회장이 될테야 (0) | 2021.12.06 |
| 백준 21.12.06. 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.12.06 |
| 백준 21.12.05. 1193번 - 분수찾기 (0) | 2021.12.05 |
| 백준 21.11.26. 2292번 - 벌집 (0) | 2021.11.26 |