[Array 구현력 실습문제] 주차 요금 계산 (프로그래머스 강의)

Soorim Yoon·2022년 10월 5일
0

문제

https://school.programmers.co.kr/learn/courses/14760/lessons/125465

  • 주차 요금을 나타내는 정수 배열 fees, 자동차의 입/출차 내역을 나타내는 문자열 배열 records가 매개변수로 주어집니다. 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

코드

import math
def solution(fees, records):
    answer = []
    
    # 세 가지의 배열을 선언
    inTime = [0]*10000      # 들어온 시간
    isIn = [0]*10000        # 차량이 있는지 여부
    sumTime = [0]*10000     # 머무른 시간 저장
    
    for record in records:
        a, b, c = record.split(" ")     # a: 시각, b: 차량번호, c: IN/OUT
        h, m = a.split(":")     # 시간, 분을 저장
        
        if c == 'IN':
            inTime[int(b)] = 60*int(h)+int(m)
            isIn[int(b)] = 1
        else:       # c == 'OUT'
            sumTime[int(b)] += (int(h)*60+int(m)) - inTime[int(b)]
            isIn[int(b)] = 0
    
    for i in range(10000):      # 나가지 않은 차량에 대한 계산 실행
        if isIn[i] == 1:
            sumTime[i] += (23*60+59) - inTime[i]
            
    for x in range(10000):
        if sumTime[x] > 0:
            answer.append(fees[1]+max(math.ceil((sumTime[x]-fees[0])/fees[2]), 0)*fees[3])
            
            # 아래 코드를 위 코드 한 줄로 간략히 작성함
            # plusmoney = max(math.ceil((sumTime[x]-fees[0])/fees[2]), 0)*fees[3]
            # fee = fees[1]+plusmoney
            # answer.append(fee)
            
        
    return answer


# math.ceil() : 반올림 함수  => 사용을 위해 math 라이브러리를 import 함
# fees[0] : 기본 시간 (요금이 부과되지 않는 기본 시간)
# fees[1] : 기본 요금
# fees[2] : 단위 시간 (몇 분 단위로 추가 요금을 부과할 것인지)
# fees[3] : 단위 요금 (얼마 요금을 추가로 부과할 것인지)

실행 결과

profile
👩🏻‍💻 AI를 좋아하는 IT학부생 > 성장하는 2년차 개발자

0개의 댓글