2장: 의미있는 이름
실습 코드
현재 도서관 코드에서는 적절한 예시가 없음.
예제: 백준 10250번 문제인 "ACM 호텔"의 풀이 코드
t = int(input())
while t > 0:
t = t - 1
h, w, n = list(map(int, input().split()))
floor = 1
room = 1
if h > 1 and w > 1:
floor = (n-1) % h + 1
room = (n-1) // h + 1
elif h == 1:
room = n
elif w == 1:
floor = n
result = floor*100 + room
print(result)
의도를 분명히 밝혀라
코드에서 짐작하기 어려운 사항
예제 1에서의
t
,h
,w
,n
은 변수의 의도가 불분명하다.floor
와room
은 왜 1로 초기화되는가?h
와w
가 1보다 클때 floor와 room은 새롭게 연산된다.h
와w
가 1일때는 floor와 room에 n 값이 대입된다.
변수의 의도
t
: 테스트 케이스h
: 호텔의 층수w
: 각 층의 방수n
: 해당 손님의 방문 순서floor
: n번째 손님이 묵을 층room
: n번째 손님이 묵을 방 번호
바꾼 이름?
t
->totalTestCase
h
->heightOfHotel
w
->widthOfHotel
n
->customerArrivalNumber
floor
->roomFloor
room
->roomNumber
totalTestCase = int(input())
for _ in range(0, totalTestCase):
heightOfHotel, widthOfHotel, customerArrivalNumber = list(map(int, input().split()))
roomFloor = 1
roomNumber = 1
if heightOfHotel > 1 and widthOfHotel > 1:
roomFloor = (customerArrivalNumber-1) % heightOfHotel + 1
roomNumber = (customerArrivalNumber-1) // heightOfHotel + 1
elif h == 1:
roomNumber = customerArrivalNumber
elif w == 1:
roomFloor = customerArrivalNumber
result = roomFloor*100 + roomNumber
print(result)
값 1의 의미
elif h == 1
에서 1은 호텔이 1층일 때SINGLE_FLOOR
상수로 정의
elif w == 1
에서 1은 각 층의 방이 1호실만 있을 때SINGLE_ROOM_NUMBER
상수로 정의
floor
와room
이 1로 초기화되는 건 출입구와 가장 가까운 방이 101호기 때문!FIRST_FLOOR
와FIRST_ROOM_NUMBER
정의
SINGLE_FLOOR = 1
SINGLE_ROOM_NUMBER = 1
FIRST_FLOOR = 1
FIRST_ROOM_NUMBER = 1
totalTestCase = int(input())
for _ in range(0, totalTestCase):
heightOfHotel, widthOfHotel, customerArrivalNumber = list(map(int, input().split()))
roomFloor = SINGLE_FLOOR
roomNumber = SINGLE_ROOM_NUMBER
if heightOfHotel > FIRST_FLOOR and w > FIRST_ROOM_NUMBER:
roomFloor = (customerArrivalNumber - 1) % heightOfHotel + 1
roomNumber = (customerArrivalNumber - 1) // heightOfHotel + 1
elif heightOfHotel == FIRST_FLOOR:
roomNumber = customerArrivalNumber
elif widthOfHotel == FIRST_ROOM_NUMBER:
roomFloor = customerArrivalNumber
result = roomFloor*100 + roomNumber
print(result)
맥락 개선
Last updated