https://school.programmers.co.kr/learn/courses/30/lessons/92341
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
python
import math
from collections import deque
def calc_time(car, carnum, out_h, out_m):
in_h, in_m = int(car[carnum][0]), int(car[carnum][1])
if in_m > out_m:
out_h -= 1
out_m += 60
time = (out_m - in_m) + 60*(out_h - in_h)
return time
def solution(fees, records):
answer = dict()
car = dict()
q = deque()
for info in records:
h, m, carnum, state = int(info[:2]), int(info[3:5]), info[6:10], info[11:]
if state == "IN":
car[carnum] = (h,m)
q.append(carnum)
else:
if carnum not in answer:
answer[carnum] = calc_time(car, carnum, h, m)
else:
answer[carnum] += calc_time(car, carnum, h, m)
q.remove(carnum)
while q:
carnum = q.popleft()
if carnum not in answer:
answer[carnum] = calc_time(car, carnum, 23, 59)
else:
answer[carnum] += calc_time(car, carnum, 23, 59)
for i in answer:
if answer[i] <= fees[0] :
answer[i] = fees[1]
else:
answer[i] = fees[1] + math.ceil((answer[i]-fees[0])/fees[2]) * fees[3]
answer = sorted(answer.items())
return [i[1] for i in answer]
ํธ๋๋ฐ ํ์๊ฐ์์ ํ์๊ฐ ๋ฐ์ ๋ ๊ฑธ๋ ธ๋ค..
์์ฒญ ๊น๋ค๋กญ์ง๋ ์์๋ ๊ฒ ๊ฐ์๋ฐ ์๊ฐ์ ๋๋ฝ๊ฒ ์ค๋ ๊ฑธ๋ฆฐ ๋ฌธ์ ใ ใ
๊ตฌํ๋ฌธ์ ๋ง์ด ํ์ด๋ณด๋ค๋ณด๋ฉด ์ข ๋๊ฒ ์ง?
์ ์ถํ๊ณ ๋์ ๋ค๋ฅธ ๋ถ๋ค ํ์ด๋ฅผ ๋ง์ด ์ฝ์ด๋ดค๋๋ฐ, ์ฝ์ด๋ณด๋ฉด์ ๊ฐ์ฅ ํฌ๊ฒ ๋๋ ์ ์
1. h, m, carnum, state ์ธ์๋ฅผ ๋ฐ์ ๋ ๊ตณ์ด ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ ํ ํ์ ์์ด split() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค
2. ์ถ์ฐจ์๊ฐ - ์ ์ฐจ์๊ฐ ๊ณ์ฐํ ๋ ์๊ฐ, ๋ถ ๋ฐ๋ก๋ฐ๋ก ๋ณต์กํ๊ฒ ๊ณ์ฐํ ํ์๊ฐ ์์๋ค
์์ฃผ ๋ฏธ์ธํ๊ฒ ์ชผ๊ธ ๋ ๋ณด๊ธฐ ์ข๊ฒ ์์ ํด ๋ณด์๋ค.
import math
from collections import deque
def calc_time(car, carnum, out_h, out_m):
in_h, in_m = int(car[carnum][0]), int(car[carnum][1])
return (out_h*60 + out_m) - (in_h*60 + in_m)
def solution(fees, records):
answer = dict()
car = dict()
q = deque()
for info in records:
h, m, carnum, state = info.replace(":"," ").split()
h, m, carnum = map(int,[h, m, carnum] )
if state == "IN":
car[carnum] = (h,m)
q.append(carnum)
else:
if carnum not in answer:
answer[carnum] = calc_time(car, carnum, h, m)
else:
answer[carnum] += calc_time(car, carnum, h, m)
q.remove(carnum)
while q:
carnum = q.popleft()
if carnum not in answer:
answer[carnum] = calc_time(car, carnum, 23, 59)
else:
answer[carnum] += calc_time(car, carnum, 23, 59)
for i in answer:
if answer[i] <= fees[0] :
answer[i] = fees[1]
else:
answer[i] = fees[1] + math.ceil((answer[i]-fees[0])/fees[2]) * fees[3]
answer = sorted(answer.items())
return [i[1] for i in answer]
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]2018 ์นด์นด์ค ์์ถ (0) | 2023.06.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]๊ณผ์ ์งํํ๊ธฐ (0) | 2023.06.17 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ก์ธ์ค (0) | 2023.06.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2023.06.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2023.05.26 |