https://school.programmers.co.kr/learn/courses/30/lessons/92341
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드
IN = "IN"
OUT = "OUT"
day_to_minute = "23:59"
def solution(fees, records):
answer = []
basic_time, basic_fee, per_time, per_fee = fees
total_time_record = dict()
in_out_record = dict()
def clock_to_minute(clock):
h, m = map(int, clock.split(':'))
minute = 60 * h + m
return minute
for record in records:
clock, car_num, entrance_type = record.split()
if entrance_type == IN:
in_out_record[car_num] = clock
else:
in_time = in_out_record[car_num]
if total_time_record.get(car_num, False):
total_time_record[car_num] += (clock_to_minute(clock) - clock_to_minute(in_time))
else:
total_time_record[car_num] = (clock_to_minute(clock) - clock_to_minute(in_time))
del in_out_record[car_num]
for car_num in in_out_record.keys():
in_time = in_out_record[car_num]
if total_time_record.get(car_num, False):
total_time_record[car_num] += (clock_to_minute(day_to_minute) - clock_to_minute(in_time))
else:
total_time_record[car_num] = (clock_to_minute(day_to_minute) - clock_to_minute(in_time))
return answer
풀이
- 딕셔너리를 사용해서 차 번호마다 주차된 시간을 계산해줍니다.
- 입차 기록은 있는데 출차 기록이 없을 경우에는 23:59로 출차 처리해줘서 시간을 더해줍니다.
- dict.get(key, value if key is not exist) 를 이용해서 딕셔너리에 값이 존재하는지 확인한 뒤 더해줄지 값을 생성할지 결정합니다.
- 딕셔너리에 존재하지 않는 키에 대해 += 연산을 하면 KeyError가 발생하기 떄문
'코드트리' 카테고리의 다른 글
[프로그래머스][Python] 문자열 압축 (0) | 2025.03.21 |
---|---|
[코드트리][Python] 외판원 순회 (0) | 2025.03.07 |
[코드트리][Python] 수들 중 최솟값 최대화하기 (0) | 2025.03.07 |
[코드트리][Python] 수들의 합 최대화하기 (0) | 2025.03.07 |