문제링크
문제 설명
- 높이(층수)가 h이고 넓이(방 개수)가 w인 호텔이 있다.
- 손님에게는 층수와 관계없이 호텔 정문에서 가까운 순서대로 방을 안내하고있다.
예)
101호 -> 201호 -> ... -> h01호
102호 -> 202호 -> ... -> h02호
- 엘레베이터의 존재는 무시한다는 전제하에 n번 째 손님에게 안내할 방 번호를 구하라
주제
난이도
풀이
import math
n = int(input())
for _ in range(n):
h, w, n = map(int, input().split())
floor = n % h
room = math.ceil(n / h)
if floor == 0:
floor = h
print(floor * 100 + room)
풀이 방법
- 방 순서는 층수와 상관없이 1호부터 주어진다. 즉 101호, 201호, 301호...
- 그러므로 n번 손님 이전에 먼저 온 손님들이 있는 방은 패스하고 그 다음 빈 방을 구하기 위해서는 전체 층수와 손님 번호를 나눈 그 나머지로 결정이 된다.
- 층수 구하기와 마찬가지로 n번 손님 이전에 먼저 온 손님들이 있는 호수는 패스하고 다음 방을 구하기 위해서는 손님 번호 / 층수를 진행한다.
- 결과가 소수점으로 나올 시 반올림 진행한다.
문제를 풀고 알게된 개념 및 소감
- 코드 길이와 난이도는 관계없구나..라는 생각이 들었다. 코드가 길다고 어려운게 아니고 반대로 코드가 짧다고 쉬운게 아니다. 특히 이 문제가 그렇다. 코드가 간결하지만 나에게 쉬운 문제는 아니였다.
물론 기본적인 수학 능력이 있는 사람은 뚝딱할 수 있을지 모르겠지만.. 패턴을 하나 하나 그려가며 공식을 찾아내는 것 또한 중요한 능력인거 같다.
이 문제는 우리 알고리즘 스터디 팀원분이 알려주신 문제인데 어려운 공식있는 다른 문제도 직접 손으로 써가며 패턴을 찾아내는 모습이 정말 대단하다고 생각했다.
그렇게 끈기있이 하나를 붙잡는 모습이 개발자에게 필요한 소양 중 하나라고 생각하기에 나도 그런 모습을 닮을 수 있도록 노력해야겠다.