https://school.programmers.co.kr/learn/courses/30/lessons/92341
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다.


처음으로 반복문을 통해 records를 훑으며 차량번호를 중복없이 리스트에 저장한 후 sort() 정렬을 하였다.
그후 차량번호에 해당하는 주차내역을 하나의 array, 'check'에 저장했다.
'check'와 index, 'cnt'를 활용하여 IN과 OUT의 시간 차이를 계산했다. 만약에 마지막 하나의 내역만 남아있는 경우에는 시간 차이를 계산하는 함수에 "23:59"를 넣어주었다. 짝수의 주차내역만 저장되어 있는 경우는 if문을 통해 걸러낼 수 있음으로 따로 경우의 수를 나누지는 않았다.
시간차이 계산함수 'time_calculate'는 chat gpt를 통해 알게 된 from datetime import datetime 라이브러리를 사용하여 분을 계산할 수 있었다.
그 후 총가격을 출력하는 함수 'price'를 활용하여 answer를 return하였는데, 이때 (math.ceil(float(minute)/fees[2]))에 해당하는 라이브러리 import math를 가져왔다. 반올림하여 단위시간에 해당하는 가격을 더해야했기 때문이다.
import math
from datetime import datetime
def time_calculate(start,end):
time_format = "%H:%M"
time1 = datetime.strptime(start, time_format)
time2 = datetime.strptime(end, time_format)
time_difference = time2 - time1
difference_in_minutes = int(time_difference.total_seconds() / 60)
return difference_in_minutes
def price(minutes,fees):
finalPrice=0
finalCalculate=[]
for minute in minutes:
finalPrice=0
if minute>fees[0]:
minute-=fees[0]
finalPrice+=fees[1]
finalPrice+=(math.ceil(float(minute)/fees[2]))*fees[3]
else:
finalPrice+=fees[1]
finalCalculate.append(finalPrice)
return finalCalculate
def solution(fees, records):
answer = []
cars=[]
for i in records:
check=i.split(" ")
if check[1] not in cars:
cars.append(check[1])
cars.sort()
result=[0]*len(cars)
for i in range(len(cars)):
check=[]
sums=0
cnt=0
for record in records:
if cars[i] in record:
confirm=record.split(" ")
check.append(confirm[0])
while True:
if len(check)>cnt and len(check)>cnt+1:
sums+=time_calculate(check[cnt],check[cnt+1])
cnt+=2
elif len(check)==cnt+1:
sums+=time_calculate(check[cnt],"23:59")
break
else:
break
answer.append(sums)
answer=price(answer,fees)
return answer| [코테] 프로그래머스 파이썬 Lv2. [1차] 프렌즈4블록 (0) | 2024.01.06 |
|---|---|
| [코테] 프로그래머스 파이썬 Lv2. 오픈채팅방 (0) | 2024.01.05 |
| [코테] 프로그래머스 파이썬 Lv2. 스킬트리 (0) | 2024.01.04 |
| [코테] 프로그래머스 파이썬 Lv2. 땅따먹기 (0) | 2024.01.03 |
| [코테] 프로그래머스 Lv2. [3차] 압축 (0) | 2024.01.01 |