728x90
๋ฐ์ํ
"""
(์ ๋ต)
์ฃผ์ฐจ ์๊ธ์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด fees, ์๋์ฐจ์ ์
/์ถ์ฐจ ๋ด์ญ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด records๊ฐ
๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ฐจ๋ ๋ฒํธ๊ฐ ์์ ์๋์ฐจ๋ถํฐ ์ฒญ๊ตฌํ ์ฃผ์ฐจ ์๊ธ์
์ฐจ๋ก๋๋ก ์ ์ ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
"""
import math
def solution(fees, records):
sales = {}
for record in records:
time, vnum, info = record.split()
hour, minute = map(int, time.split(':'))
if vnum in sales:
if info == 'IN':
sales[vnum][1:] = [hour*60 + minute, 1439]
else:
sales[vnum][0] += ((hour*60 + minute) - sales[vnum][1])
sales[vnum][1:] = [0, 0]
else:
sales[vnum] = [0, hour*60 + minute, 1439]
result = []
for vnum, fare in sales.items():
total = fare[0] + (fare[2] - fare[1])
extra = math.ceil((total-fees[0])/fees[2])*fees[3]
fee = fees[1] + (extra if extra > 0 else 0)
result.append([vnum, fee])
return [v[1] for v in sorted(result, key=lambda x: x[0])]
"""
๋ฌธ์ ๋๋ก ํ์ด์ ์นด์นด์ค์์ ์ํ๋ ๋ฐฉ์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
๋จผ์ records๋ฅผ ๋ณด๊ธฐ์ข๊ฒ ๋ฐ๊พธ๊ธฐ ์ํด for๋ฌธ์ ํ๋ฒ ์ฌ์ฉํ๋ค.
records๋ฅผ time๊ณผ vnum (vehicle number) in/out ์ฌ๋ถ๋ก splitํ์๋ค.
์คํธ๋งํ์ธ ์๊ฐ์ ๋ถ์ผ๋ก ์ ๋ถ ๋ง์ถ๊ธฐ ์ํด ๋ค์ time์ hour, minute์ผ๋ก ๋๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐจ๋๋ฒํธ(vnum)๊ฐ ๋งค์ถ์ฅ๋ถ(sales)์ ์์๋์ ์์๋๋ฅผ ์ฒดํฌํ๋ค.
if else๋ก ์์๋๋ฅผ ๋จผ์ ๋น๊ตํ์ง๋ง, ์์๋๊ฐ ๊ฐ์ฅ ๋จผ์ ์๊ธฐ๋ฏ๋ก
else๋ฌธ๋ถํฐ ์ค๋ช
ํ๋ฉด ๋งค์ถ์ฅ๋ถ์ ์ฐจ๋๋ฒํธ๋ฅผ ์ ๋๋ค.
๋งค์ถ์ฅ๋ถ์๋ [๋ช๋ถ๋์ ์ฃผ์ฐจํ๋์ง, ๋ค์ด์จ ์๊ฐ, ๋๊ฐ์๊ฐ] ์ผ๋ก ์ ์ด์ค๋ค.
์ฒ์์๋ ์์ง ๋๊ฐ์ง ์์๊ธฐ ๋๋ฌธ์ [0, .., ..] ์ด๊ณ
๋ค์ด์จ ์๊ฐ์ ๋ถ์ผ๋ก ํต์ผํ์ฌ [.., hour*60+minute, ...]์ผ๋ก ์ ์๊ณ ,
๋๊ฐ ์๊ฐ์ ๋ฌธ์ ์์ ์ ํ์์ง ์๋ค๋ฉด default๊ฐ 23:59์ด๊ธฐ ๋๋ฌธ์
๊ณ์ฐํ์ฌ [.., .., 1439(23*60+59)]๋ก ์ ์ด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ if๋ฌธ์ผ๋ก ๋์์์ ๋งค์ถ์ฅ๋ถ(sales)์ ์ฐจ๋๋ฒํธ๊ฐ ์๋ค๋ฉด
๋ค์ด์จ๊ฑด์ง ๋๊ฐ๊ฑด์ง๋ฅผ ํ์ธํ๋ค.
๋ค์ด์จ๊ฑฐ๋ผ๋ฉด else๋ฌธ์ ์ ์ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ด์ค๋ค.
์ด๋๋ ๋ช๋ถ๋์ ์ฃผ์ฐจํ๋์ง ์๊ฐ์ด ์ ํ ์์ด [@, hour*60+minute, 1439]๋ก ๋๋ค.
๋๊ฐ๊ฒ์ด๋ผ๋ฉด ์ถ์ฐจ์๊ฐ์์ ์
์ฐจ์๊ฐ์ ๋นผ์ฃผ์ด ์ฃผ์ฐจํ ์๊ฐ์ ๋ฃ์ด์ฃผ๊ณ
[@, 0, 0]์ผ๋ก ์ธํ
ํด์ค๋ค.
for๋ฌธ์ ๋ค ๋๋ด๊ณ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ฃผ์๋ค.
๋ฆฌ์คํธ๋ก ๋ง๋ค๋ ์์ธ๋ก ์
์ฐจ์๊ฐ๋ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ด
ํ๋ฒ๋ ์ถ์ฐจ์๊ฐ์์ ์
์ฐจ์๊ฐ์ ๋นผ์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ fees์์ ๊ธฐ๋ณธ์๊ฐ๊ณผ ์๊ธ๋ฑ์ ๋ฌธ์ ์์ ๋์จ ์๋๋ก ์ฒ๋ฆฌํ์๋ค.
๋ง์ง๋ง์ ๋ฆฌ์คํธ๋ฅผ ์ฐจ๋๋ฒํธ๋ก ์ํธํ์ฌ ์๊ธ๋ง ๋ฆฌํด์์ผ์ฃผ์๋ค.
"""
728x90
๋ฐ์ํ
๋๊ธ