코딩/프로그래머스 lv2
[프로그래머스] 주차 요금 계산 - 파이썬
코딩 코딩 코오딩
2022. 3. 21. 20:14
https://programmers.co.kr/learn/courses/30/lessons/92341
코딩테스트 연습 - 주차 요금 계산
[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
def cal_time(time):
minute = 60*int(time[0:2]) + int(time[3:])
return minute
def solution(fees, records):
answer = []
time, b_money, cut_time ,t_money = fees
parking = {}
car_info = {}
for i in range(len(records)):
car_info[records[i][6:10]] = 0
parking[records[i][6:10]] = 0
for i in range(len(records)):
if "IN" == records[i][11:13]:
parking[records[i][6:10]] = records[i][0:5]
else:
car_info[records[i][6:10]] += cal_time(records[i][0:5]) - cal_time(parking[records[i][6:10]])
parking[records[i][6:10]] = 0
for car_num in parking:
if parking[car_num] != 0:
car_info[car_num]+=cal_time('23:59')- cal_time(parking[car_num])
for car_num in car_info:
if car_info[car_num] <= time:
car_info[car_num] = b_money
else:
if (car_info[car_num]- time)%cut_time != 0:
car_info[car_num] = b_money + (((car_info[car_num] - time)//cut_time)+ 1)* t_money
else:
car_info[car_num] = b_money + ((car_info[car_num] - time)//cut_time)* t_money
car_info= sorted(car_info.items())
for i in range(len(car_info)):
answer.append(car_info[i][1])
return answer
올만에 파이썬이다. 문제는 쉽다고 생각했지만 문제 하나하나 조건이 조금 생각하는게 까다로웠다
알고리즘 보다는 구현에 집중된 문제이다. 딕셔너리를 잘사용하면 좋은 문제들이 많다.
특히 문자열을 요구하는 문제에서
그리고 나는 문자열을 나눌때 슬라이스를 했는데
: 을 스플릿해서 푸는 방법도 있다.
반응형