방명록
- [알고리즘][파이썬] 백준_10250번_ACM 호텔2021년 11월 23일 17시 45분 44초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
(T)명의 손님에 대하여 호텔의 층 수(H), 각 층의 방 수(W), 몇 번째 손님(N)이 주어질 때 방 번호를 출력해야 한다.
만약 7번째 손님이라면 102호에 배정한다.
1차 시도
# 1차시도(결과: 틀렸습니다) T = int(input()) for i in range(T): H, W, N = map(int, input().split()) rn = 0 # 방 번호 fl = 0 # 층 수 if N % H == 0: fl = H else: fl = N % H rn = N // H + 1 print(fl * 100 + rn)
N번째 손님을 H층으로 나눈 나머지가 0일때의 경우에 대한 처리가 문제였다.
그 경우에는 방번호를 구할때 +1을 하지 말아야 한다.
2차 시도
# 2차시도(결과: 맞았습니다) # N번째 손님을 H층으로 나눈 나머지가 0일때는 방 번호를 구할때 +1을 하지 않는다. T = int(input()) for i in range(T): H, W, N = map(int, input().split()) rm = 0 # 방 번호 fl = 0 # 층 수 if N % H == 0: fl = H rm = N // H else: fl = N % H rm = N // H + 1 print(fl * 100 + rm)
성공!
해결한 방법
문제에 제시된 ACM 호텔 정면도를 [그림2]와 같이 좀 더 간단하게 그려 보았다.
객실 수도 9개로 줄였다.
각 방 별로 손님은 [그림3]과 같은 순서로 배정된다.
만약 [그림3]의 손님 2번의 방을 배정한다면,
[그림2]의 201호 임을 알 수 있는 식을 만들어야 한다.
더보기방 번호 설정 규칙
200은 층 수에 100을 곱한 값이고, 1은 그 층의 첫 번째 방이다.
그래서 방 번호는 201이다.
2번 손님을 층수 3으로 나누면 몫은 0, 나머지는 2이다.
이때 몫은 방 번호, 나머지는 층 수가 되는데,
0인 방 번호는 없으므로 +1한다.
방 번호 = N // H + 1
층 수 = N % H하지만 위 식이 모든 경우에 통용되는 것은 아니다.
만약 나머지가 0인 경우(N % H = 0)에는 다음의 식을 적용해야 한다.
방 번호 = N // H
층 수 = H728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[알고리즘][파이썬] 백준_2447번_별 찍기 - 10 (0) 2021.11.26 [알고리즘][파이썬] 백준_10870번_피보나치 수 5 (0) 2021.11.25 [알고리즘][파이썬] 백준_10872번_팩토리얼 (0) 2021.11.24 [알고리즘][파이썬] 백준_2869번_달팽이는 올라가고 싶다 (0) 2021.11.19 [알고리즘][파이썬] 백준_1193번_분수찾기 (0) 2021.11.18 다음글이 없습니다.이전글이 없습니다.댓글