관리 메뉴

솜씨좋은장씨

[Programmers] 2022 KAKAO BLIND RECRUITMENT - 주차 요금 계산 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 2022 KAKAO BLIND RECRUITMENT - 주차 요금 계산 (Python)

솜씨좋은장씨 2022. 1. 19. 22:26
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 2022년 카카오 블라인드 채용 코딩테스트 문제였던 주차 요금 계산 입니다.

 

코딩테스트 연습 - 주차 요금 계산

[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]

programmers.co.kr

👨🏻‍💻 문제 풀이

어느 주차장의 입차, 출차 정보와 주차장의 요금표 정보를 입력 받으면

주차장을 이용한 차량들의 주차요금을 계산하는 문제입니다.

입차 출차 시간을 계산 하는데에는 python datetime의 strptime을 활용했습니다.

2022.01.19 - [Programming/Python] - [Python] datetime의 strptime을 활용하여 시간과 시간 사이의 차이 구하는 방법

 

[Python] datetime의 strptime을 활용하여 시간과 시간 사이의 차이 구하는 방법

개발을 하다 보면 종종 특정 시간과 특정 시간 사이에 얼마나 많은 시간이 흘렀는지 구해야 할 경우가 있습니다. 직접 시간을 계산하는 코드를 작성해도 되지만 2시 39분 -> 5시 25분 까지 얼마나

somjang.tistory.com

👨🏻‍💻 코드 (Solution)

from datetime import datetime

def solution(fees, records):
    answer = []
    parking_dict, fee_dict = {}, {}
    
    last_out_time = datetime.strptime("23:59:00", "%H:%M:%S")
    
    for record in records:
        parking_time, car_number, in_out = record.split()
        
        parking_time = datetime.strptime(f"{parking_time}:00", "%H:%M:%S")
        
        if car_number not in parking_dict.keys():
            parking_dict[car_number] = []
        
        parking_dict[car_number].append(parking_time)
        
    for car_num_key in parking_dict.keys():
        park_time, car_parking_fee = 0, 0
        is_more_fee, more_fee_time = False, 0
        
        in_out_time_len = len(parking_dict[car_num_key])
        if in_out_time_len % 2 == 1:
            parking_dict[car_num_key].append(last_out_time)
            in_out_time_len += 1
        
        for i in range(in_out_time_len // 2):
            park_time += (parking_dict[car_num_key][2*(i-1)+1] - parking_dict[car_num_key][2*(i-1)]).seconds // 60      
        
        if park_time - fees[0] > 0:
            is_more_fee = True
            more_fee_time = (park_time - fees[0]) / fees[2]
            
            if more_fee_time != int(more_fee_time):
                more_fee_time = int(more_fee_time) + 1
                
        car_parking_fee = fees[1] + more_fee_time * fees[3]        
        
        fee_dict[car_num_key] = int(car_parking_fee)
        
    answer = [fee[1] for fee in sorted(fee_dict.items(), key=lambda x: x[0])]
    
    return answer

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments