2022 KAKAO BLIND RECRUITMENT : 주차 요금 계산

송진영·2022년 10월 2일
0

프로그래머스-python

목록 보기
8/22

2022 KAKAO BLIND RECRUITMENT : 주차 요금 계산

문제풀이

※ 입차와 출차에 따른 요금을 계산하기 위해서는 입차 기록을 저장하는 dictionary와 total 기록을 저장하는 dictionary가 필요하다.
1. 기록 문자열을 공백 단위로 구분하여 번호, 시간, 내역을 구해 시간의 시 단위를 모두 분 단위로 변경해 더해준다.
2. 주어진 records를 토대로 입차 기록 dictionary에 해당 번호가 있을 경우, total dictionary에 출차 시간을 더하고, 입차 시간을 빼주고, 입차 기록을 지워준다.
3. 입차 기록 dictionary에 남아 있는 번호들은 출차 시간을 23시 59분으로 계산하여 2번과 같은 과정을 반복해준다.
4. 요금 계산법을 통해 요금을 계산해주고, 튜플 형태로 번호와 요금을 answer에 저장해준다.
5. answer을 정렬해준다.
6. answer의 요금 부분만 return 해준다.

from collections import defaultdict

def solution(fees, records):
    answer = []
    dict = {}
    total = defaultdict(int)
# 문제 풀이 1번
    for record in records:
        times,number,c = record.split()
        hours, minutes = times.split(":")
        time = int(hours)*60 + int(minutes)
  # 문제 풀이 2번
        if number in dict:
            total[number] += time - dict[number]
            del dict[number]
        else:
            dict[number] = time
    out = 23*60 + 59
# 문제 풀이 3번
    for key,value in dict.items():
        total[key] += out - value
# 문제 풀이 4번
    for key, value in total.items():
        if value <= fees[0]:
            answer.append((key, fees[1]))
        else:
            fee = (value - fees[0]) // fees[2] * fees[3] + fees[1]
            if (value-fees[0]) % fees[2] != 0:
                fee += fees[3]
            answer.append((key,fee))
    # 문제 풀이 5번
    answer.sort()
# 문제 풀이 6번
    return [value[1] for value in answer]
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글