https://school.programmers.co.kr/learn/courses/30/lessons/92341
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ฅผ ์๊ฐํ๋๊ฑด ์ฌ์ ์ผ๋.. ๋ฌธ์์ด ์ฒ๋ฆฌ๊ฐ ๊น๋ค๋ก์ด ๋ฌธ์ ์๋ค.
๋จผ์ ๋์ ๋๋ฆฌ์ {์ฐจ๋ ๋ฒํธ: ์๊ฐ(์:๋ถ ๋ฆฌ์คํธ)}์ผ๋ก ์ ์ฅํ๊ณ ,
๋ฐ๋ณต๋ฌธ์ ํตํด ๋์ ๋๋ฆฌ๋ฅผ ์ํํ๋ฉด์ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ๊ณ์ฐํด์คฌ๋ค.
time ๋ณ์๋ ๊ฐ ์ ์ฐจ/์ถ์ฐจ์ ๋ํ ์๊ฐ์ด๊ณ , total ๋ณ์๋ ๋์ ์ฃผ์ฐจ ์๊ฐ์ด๋ค.
time์ ๋์ ๋๋ฆฌ์ ์ ์ฅ๋์ด ์๋ ์๊ฐ์ ๋๊ฐ์ฉ ์ง์ง์ด์ ์๊ฐ์ ๊ณ์ฐํด์ฃผ๊ณ , ์ด๋ฅผ total์ ๋ํ๋ค.
์ง์ง์ด์ง ์๊ฐ์ด ์์ผ๋ฉด ๋ง์ง๋ง ์๊ฐ์์ 23:59๊น์ง ๊ณ์ฐํ์ฌ total์ ๋ํ๋ค.
๋ชจ๋ ์๊ฐ ๊ณ์ฐ์ด ๋๋๋ฉด ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํ์ฌ ๋์ ๋๋ฆฌ์ value ๊ฐ์ ๋ฐ๊ฟ์ค๋ค.
๋ง์ง๋ง์ผ๋ก ๋์ ๋๋ฆฌ๋ฅผ key๊ฐ์ผ๋ก ์ ๋ ฌํด์ฃผ๊ณ , value๊ฐ๋ง ๋ชจ์์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 92341: ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (2022 KAKAO BLIND RECRUITMENT)
import math
def solution(fees, records):
car = []
dic = {}
for i in records: # ๋์
๋๋ฆฌ์ ์ ์ฅ {์ฐจ๋ ๋ฒํธ: ์๊ฐ}
j = i.split()
if j[1] in dic:
dic[j[1]].append(j[0])
else:
car.append(j[1])
dic[j[1]] = [j[0]]
for i in car:
time = -1
total = 0
for j in dic[i]: # ๊ฐ ๋์
๋๋ฆฌ๋ฅผ ์ํํ๋ฉด์ ๋์ ์ฃผ์ฐจ ์๊ฐ ๊ณ์ฐ
h = int(j.split(':')[0])
m = int(j.split(':')[1])
if time == -1:
time = h * 60 + m
else:
time = h * 60 + m - time
total += time
time = -1
if time != -1:
total += (23*60+59) - time
# ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ
if total > fees[0]:
dic[i] = fees[1] + math.ceil((total-fees[0]) / fees[2]) * fees[3]
else:
dic[i] = fees[1]
dic = sorted(dic.items()) # key๊ฐ์ผ๋ก ์ ๋ ฌ
answer = []
for i, j in dic:
answer.append(j)
return answer