문제
https://school.programmers.co.kr/learn/courses/30/lessons/92341
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
해당 문제는 자동차 번호판이 작은 숫자부터 큰 숫자까지의 주차 요금을 반환하는 문제이다.
어떤 특별한 테크닉을 강요하기보다는 구현을 얼마나 야물딱지게 할 수 있는지 판별하는 문제 인 듯하다. 나 같은 경우에는 사전형을 만들어서 입, 출 기록을 적어놓은 다음 만약 입, 출 기록이 짝수가 아닌 홀수라면 그 입, 출 기록 마지막에 23:59분을 추가하여 문제를 풀었다.
나머지는 괜찮은데 (주차시간 - 기본시간) / 단위 시간을 계산 할 때에 올림 해서 처리하라고 지문에 적혀있으니 꼼꼼히 읽어보길 바란다.
from collections import defaultdict
from math import ceil
def solution(fees, records):
standard_time, standard_fee, unit_time, unit_fee = fees
cars = defaultdict(list)
for record in records:
times, car_number, move = record.split(" ")
hour, minute = map(int, times.split(":"))
time = hour * 60 + minute
if move == "IN":
cars[car_number].append(-time)
else:
cars[car_number].append(time)
for key in cars.keys():
if len(cars[key]) % 2 == 1:
cars[key].append(60 * 23 + 59)
time = sum(cars[key]) - standard_time
if time < 0:
time = 0
cars[key] = standard_fee + ceil(time / unit_time) * unit_fee
else:
cars[key] = standard_fee + ceil(time / unit_time) * unit_fee
else:
time = sum(cars[key]) - standard_time
if time < 0:
time = 0
cars[key] = standard_fee + ceil(time / unit_time) * unit_fee
else:
cars[key] = standard_fee + ceil(time / unit_time) * unit_fee
answer = []
for key in sorted(cars.keys()):
answer.append(cars[key])
return answer
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 LV2 올바른 괄호 (0) | 2023.07.17 |
---|---|
프로그래머스 LV2 프로세스 (0) | 2023.07.11 |
프로그래머스 Lv2 구명보트 (0) | 2023.07.04 |
프로그래머스 Lv1 바탕화면 정리 (0) | 2023.05.30 |
프로그래머스 LV1 게임 맵 최단 거리 (0) | 2023.05.25 |