본문 바로가기

프로그래머스 퀴즈(Python)/level 2

23.02.09 파이썬 코딩 퀴즈#144 주차 요금 계산(프로그래머스 스쿨)

이번 문제는 주차 요금 계산 문제이다.

기준 요금표가 존재하고 각 시간별로 차량 번호에 따른 입차, 출차 내역이 주어진다.

주어진 시간에 따라 요금을 계산하고, 만약 누적 주차 시간이 기본 시간 이하라면 기본요금을, 그 이상이라면 기본 요금 + 초과한 시간에 대한 단위 요금을 계산하면 된다. 또한 초과한 시간이 단위 시간으로 나누어 떨어지지 않으면, 올림 해서 계산한다. 그리고 출차도니 내역이 없는 경우 23:59에 출차된 것으로 간주해야 한다.

이때 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수 배열에 담아 return 하면 된다.

전달되는 fees 는 순서대로, 기본 시간(분), 기본 요금(원), 단위 시간(분), 단위 요금(원) 이며, records 의 한 행은 시간기록, 차량번호, 입/출 여부를 전달한다.

먼저 math 라이브러리를 사용하여 올림 계산에 적용할 생각이다.

그리고 fees 의 정보를 각 변수에 선언하여 사용하였다.

이제 records 를 반복문을 통해 돌며 cars 에 '차량번호':['입/출 시간' ] 형태로 집어 넣게 된다.

이제 주차시간을 계산해야 하는데, 만약 ['입/출 시간']의 길이가 홀수라면 이는 마지막 출고 기록이 없다는 의미이므로, 미리 구해둔 max_t 값을 추가하여 준다.

그리고 순서대로, in, out 시간을 pop()으로 가져와서 계산한 다음, temp 에 저장하여 주고, 최종적으로 나온 temp의 값들을 합산하여 다시 dict 의 value로 전달한다.

이제 요금만 계산하면 끝이다. 주차시간이 기본 시간을 초과하는 경우에는 초과한 시간을 구해서 해당 수식에 넣어주면 된다. 만약 그렇지 않다면 그냥 기본 요금을 넣어주면 된다.