[프로그래머스] 주차 요금 계산

HL·2022년 4월 25일
0

프로그래머스

목록 보기
39/44

문제링크

https://programmers.co.kr/learn/courses/30/lessons/92341

문제설명

  • 주차장에 들어온 차, 나간 차 목록이 주어짐
  • 요금표(기본요금, 추가요금)가 주어짐
  • 차 별로 주차장 이용시간 계산
  • 안 나갔으면 23:59에 나간걸로 계산

풀이

  • 들어온 시간 저장
  • 나간 경우 시간 계산 후 따로 누적 저장
  • 안 나간 차들 따로 시간 계산후 저장
  • 정렬 후 요금 계산

코드

import math

def solution(fees, records):
    answer = []
    
    timeDict = dict()
    inDict = dict()
    
    for line in records:
        ts, cn, io = line.split()
        t = ston(ts)
        # 들어감
        if io == "IN":
            inDict[cn] = t  # 들어간 시간
        # 나옴
        elif io == "OUT":
            if cn not in timeDict:
                timeDict[cn] = 0
            timeDict[cn] += t - inDict.pop(cn)  # 시간 계산
    
    # 안나온거
    for cn in inDict:
        if cn not in timeDict:
            timeDict[cn] = 0
        timeDict[cn] += ston("23:59") - inDict[cn]
    
    # 요금계산
    cns = list(timeDict.keys())
    cns.sort()
    for cn in cns:
        tt = timeDict[cn]
        ff = 0
        if tt <= fees[0]:   # 기본요금
            ff = fees[1]
            answer.append(ff)
        else:   # 추가요금
            ff = fees[1]    # 기본
            tt -= fees[0]   # 추가시간
            mm = math.ceil(tt / fees[2])    # 추가요금몫
            ff += mm * fees[3]
            answer.append(ff)
        
    return answer


def ston(string):
    hs, ms = string.split(":")
    h = int(hs)
    m = int(ms)
    return m + h * 60
profile
Frontend 개발자입니다.

0개의 댓글

관련 채용 정보