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->totalTestCaseh->heightOfHotelw->widthOfHoteln->customerArrivalNumberfloor->roomFloorroom->roomNumber
값 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정의
맥락 개선
Last updated