2024. 11. 27. 02:43ㆍCODING/BOJ [python]
엘리베이터와 가까운 층을 우선으로 배정해주는 호텔에서 호수를 구하는 문제입니다.
이번 문제는 조금 복잡합니다..ㅠㅠ
입력
H == 호텔의 층 수
W == 각 층의 방 수
N == 손님의 순서
출력
방 번호
오늘도 등장한 그림판 ^^
엘리베이터와 가장 가까운 호수부터, 아래에서 위쪽으로 방이 배정됩니다.
즉, 1번으로 101호부터 H의 층까지 배정한 후,
2번으로 102호부터 H의 층까지 배정을 받는 것입니다.
H==6, W==12, N==? 일 때,
N==1 101
N==2 201
N==3 301
...
N==6 601
N==7 102
N==8 202
이렇게 방이 배정는 것입니다.
여러번 시도 끝에 해결했습니다ㅎㅎ
if문에 들어가는 조건을 뒤늦게 고려했습니다..허허
T = int(input())
for _ in range(T):
H, W, N = map(int, input().split())
floor=N%H
room=N//H+1
if N%H == 0:
room = N//H
floor = H
print(floor*100 + room)
H==3 && N==7이라면, 3만큼 올라갔다가 다시 1층으로 내려와 3만큼 올라가고 남은 1이 해당 층이 되는 방식입니다.
몫만큼 옆으로 이동하고 나머지만큼 층수가 올라가는 것입니다.
그렇기에 층수 floor은 N%H이 됩니다.
호수는 몫만큼 옆으로 이동한 것에서 나머지 값이 있는 부분이 되어야 합니다.
즉, H==3 && N==7이라면, 3만큼 2번 이동한 값에서 나머지가 있는 부분인 1을 더해야 하기 때문에 003호가 됩니다.
그렇기에 호수 room은 N//H +1이 됩니다.
여기서 추가적으로 만들어 줘야 하는 조건은 나머지가 0이 될 때 입니다.
나머지가 0이 된다는 것은 제일 꼭대기 층에 위치한다는 의미가 됩니다.
그렇기에 최대 층수인 H값이 그대로 floor이 되는 것이고,
room또한 몫에서 더할 나머지 값이 없기 때문에 N//H가 됩니다.
이로써 Class 1단계의 문제들을 모두 해결했습니다~~
ACM 호텔은 예전부터 못풀었던 문제였는데.. 계산식을 찾아내서 뿌듯합니다ㅎㅎ
'CODING > BOJ [python]' 카테고리의 다른 글
Baekjoon Online Judge [Python] 31611번 火曜日 (Tuesday) (0) | 2024.12.01 |
---|---|
Baekjoon Online Judge [Python] 15232번 Rectangles (2) | 2024.12.01 |
Baekjoon Online Judge [Python] 2751번 수 정렬하기 2 (0) | 2024.11.26 |
Baekjoon Online Judge [Python] 2920번 음계 (0) | 2024.11.25 |
Baekjoon Online Judge [Python] 16204번 카드 뽑기 (0) | 2024.11.24 |