1. ๋ฌธ์ ์ค๋ช
- ์
๋ ฅ
- fees: ์ฃผ์ฐจ ์๊ธ์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด(๊ธฐ๋ณธ ์๊ฐ, ๊ธฐ๋ณธ ์๊ธ, ๋จ์์๊ฐ, ๋จ์ ์๊ธ)
- records : ์๋์ฐจ์ ์ /์ถ์ฐจ ๋ด์ญ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด
- ์ถ๋ ฅ
- ์ฐจ๋ ๋ฒํธ๊ฐ ์์ ์๋์ฐจ๋ถํฐ ์ฒญ๊ตฌํ ์ฃผ์ฐจ ์๊ธ์ ์ฐจ๋ก๋๋ก ์ ์ ๋ฐฐ์ด์ ๋ด์์ return
2. ์ฝ๋
solution1.py
import math
def time_to_minutes(time):
h, m = map(int, time.split(':'))
return h*60 + m
def solution(fees, records):
answer = []
# ๊ธฐ๋ณธ ์๊ฐ, ๊ธฐ๋ณธ ์๊ธ, ๋จ์ ์๊ฐ, ๋จ์ ์๊ธ ์
dt, df, ut, uf = fees
dic = dict()
for r in records:
time, car, inout = r.split()
car = int(car)
if car in dic: #์ฐจ๋ณ๋ก ์ฃผ์ฐจ์๊ฐ(๋ถ๋จ์), inout์ ์ ์ฅ
dic[car].append([time_to_minutes(time), inout])
else:
dic[car] = [[time_to_minutes(time), inout]]
rList = sorted(dic.items()) #key๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์
๋๋ฆฌ๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ ๋ฆฌ์คํธ๋ก ๋ฐํ
for r in rList:
t = 0
for rr in r[1]: #item๋ค ํ์ธ
if rr[1] == "IN": #inout๊ฐ IN์ด๋ฉด
t -= rr[0] #์๊ฐ ๋นผ๊ธฐ
else: #OUT ์ด๋ฉด
t += rr[0] #์๊ฐ ๋ํ๊ธฐ
if r[1][-1][1] == "IN": #๋ง์ง๋ง์ ์ถ์ฐจ ๋ด์ญ์ด ์๋ ๊ฒฝ์ฐ
t += time_to_minutes('23:59') #์ถ์ฐจ์๊ฐ์ 23:59์ผ๋ก ๊ฐ์ฃผ
if t <= dt: #๊ธฐ๋ณธ์๊ฐ๋ณด๋ค ์์ผ๋ฉด ๊ธฐ๋ณธ์๊ธ์ ์ถ๊ฐ
answer.append(df)
else: #๊ธฐ๋ณธ ์๊ฐ์ด์์ด๋ฉด
answer.append(df + math.ceil((t-dt) / ut) * uf)
return answer
3. ํ๊ณ
- ๋์ ์๊ฐ ๊ณ์ฐ์, ๋ ๋ฒ ์ด์ ์ฃผ์ฐจํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ์ง ์์, ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ ์ ์ ์์ธ ์ผ์ด์ค ๊ผญ ์๊ฐํ๊ธฐ
- ์๋์ฐจ๋ณ๋ก [IN, OUT, ๋ด์ผํ ์๊ธ]์ ๋์ ๋๋ฆฌ์ ์ ๋ฆฌํ๊ณ ํ์๋๋ฐ, ๋ ๋ฒ ์ด์ ์ฃผ์ฐจํ๋ ๊ฒฝ์ฐ, IN, OUT ์๊ฐ์ด ํ๋์ด์ ์์ ์ ์๋ค๋๊ฑธ ๋์ค์ ๊นจ๋ฌ์๋ค. ๋๋ ์ด์ ์ ๋ณด์ ์๋ก์ด ์ ๋ณด๋ฅผ ๋ฎ์ด์์ฐ๋ฉฐ ํ๊ณ ์์๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ : ์ด๋ค ์ฐจ๊ฐ ๋ ๋ฒ ์ด์ ์ฃผ์ฐจํ๋ ๊ฒฝ์ฐ ๋ฆฌ์คํธ ์์ ์ ๋ณด๋ฅผ ์ถ๊ฐ
- {5961: [[334, 'IN'], [479, 'OUT'], [1379, 'IN'], [1380, 'OUT']], 0: [[360, 'IN'], [394, 'OUT'], [1139, 'IN']], 148: [[479, 'IN'], [1149, 'OUT']]}
- dictionary์ key๋ก ์ฐจ ๋ฒํธ๋ฅผ ๋ฃ๊ธฐ ์ ,๋ฏธ๋ฆฌ int()๋ฅผ ์์์คฌ๋ค : ์ฐจ ๋ฒํธ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ ๋๋ฅผ ์ํด
- ๋์ค์ ์ต์ข ์ถ๋ ฅ์์๋ ์ฐจ๋ฒํธ๊ฐ ๋น ๋ฅธ ์์๋๋ก "์ฃผ์ฐจ์๊ธ"๋ง ์ถ๋ ฅํ๋ฉด๋๋๊น ๊ตณ์ด ์ฐจ ๋ฒํธ๋ฅผ ์์๋ณต๊ท ์ํฌ ํ์๊ฐ ์๋ค.
- ๋์
๋๋ฆฌ๋ฅผ key ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ : rList = sorted(dic.items())
- key๊ธฐ์ค์ผ๋ก ๋์ ๋๋ฆฌ๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ ํ ๋ฆฌ์คํธ๋ก ๋ฐํ๋จ
- ๋์ผํ ์ฐจ๋์ IN, OUT ๋์ ์๊ฐ์ ์ถ์ ํด ๋์ ์๊ฐ์ฐจ๋ฅผ ๊ตฌํ๊ธฐ ๋ณด๋ค ๊ฐ ์๊ฐ์ ๋ถ์ผ๋ก ๋ฐ๊พผ ์๊ฐ์ ์ ๋์ ์ธ ์๊ฐ์ผ๋ก ๋ณด๊ณ , IN์ด ๋์ค๋ฉด time์์ ๋นผ๊ณ , ๋๊ฐ๋ฉด time์ ๋ํ๋ ๋ฐฉ์์ ์ทจํ๋ค.
4. ์ฐธ๊ณ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (Python) (0) | 2022.02.16 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] n์ง์ ๊ฒ์ (Python) (0) | 2022.02.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ์ฑํ ๋ฐฉ (Python) (0) | 2022.02.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ (Python) (0) | 2022.02.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๊ธ ๊ทธ๊ณก (Python) (0) | 2022.02.09 |