JUST DO IT!

[CT] 주차 요금 계산 본문

코딩테스트

[CT] 주차 요금 계산

sunhokimDev 2023. 4. 11. 00:38

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

import math

# 요금 계산 함수
def Cal_fees(fees,minutes):
    return fees[1] + math.ceil(max(0, (minutes - fees[0])) / fees[2]) * fees[3]

def solution(fees, records):
    inCarDic = {}
    feeDic = {}
    
    #입차 내역 등록 및 출차 차량 주차시간 계산
    for e in records:
        elist = e.split(" ")
        hour, minute = elist[0].split(":") 
        TotalMinute = int(hour) * 60 + int(minute) # 시간을 분으로 환산
        
        if elist[1] not in inCarDic: # 해당 차번호의 내역이 없으면
            inCarDic[elist[1]] = TotalMinute # "차번호" : "시간" 등록
            
        else : # 해당 차번호의 내역이 있으면
            MinuteForFee = TotalMinute - inCarDic[elist[1]] # 주차시간 계산
            if elist[1] not in feeDic:
                feeDic[elist[1]] = MinuteForFee
            else:
                feeDic[elist[1]] += MinuteForFee
            del inCarDic[elist[1]] # 입차 내역에서 삭제
            
    # 입차 내역에 남은 차의 주차비 계산
    for carNum, minutes in inCarDic.items():
        MinuteForFee = 23*60+59 - minutes
        if carNum not in feeDic:
            feeDic[carNum] = MinuteForFee
        else:
            feeDic[carNum] += MinuteForFee
    
    return [Cal_fees(fees, minutes) for car, minutes in sorted(feeDic.items())]

고쳐야 할 점 🤤

  • 코드의 가독성 신경쓰기
    • elist[1], elist[0] 등 사용 자제
    • ex) elist = e.split(" ") ==> carNum, minutes = e.split(" ")
  • 시간 계산 유연하게 하기
  • 문제에서 제시하는 조건 꼼꼼하게 읽기..

참고했던 블로그 : https://latte-is-horse.tistory.com/326