Tags
- DP
- ๋ฌธ์์ด
- ๊ต์ฌ
- ์ ๋ ฌ
- dfs
- stack
- greedy
- Brute Force Algorithm
- ์๋ฎฌ๋ ์ด์
- ๊ทธ๋ํ ํ์
- ๊ตฌํ
- ๊น์ด ์ฐ์ ํ์
- sort
- Dynamic Programming
- ๊ทธ๋ํ ์ด๋ก
- Java
- ์ํ
- Study
- queue
- ๋ฐฑํธ๋ํน
- BOJ
- SpringBoot
- ๋๋น ์ฐ์ ํ์
- LV2
- BFS
- CodingTest
- ์ ์๋ก
- PGM
- Python
- ์๋ฃ๊ตฌ์กฐ
Archives
๊ธฐ๋ก๋ฐฉ
Lv.2 : ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ฐจ๋๋ง๋ค ์ฃผ์ฐจ์ฅ ์ด์ฉ์๊ฐ์ ๋์ ํฉ์ฐํ๋ค.
- ์๊ธ์ ๊ณ์ฐํด ์ฐจ๋๋ฒํธ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import math
def solution(fees, records):
parking = {}
check = {}
answer = {}
for i in records:
time, number, order = i.split()
now = list(map(int,time.split(':')))
now_m = now[0] * 60 + now[1]
if order == "IN":
parking[number] = now_m
check[number] = True
if number not in answer:
answer[number] = 0
else:
check[number] = False
answer[number] += now_m - parking[number]
for i, flag in check.items():
if flag:
answer[i] += (23*60+59) - parking[i]
check[i] = True
for num, v in answer.items():
if v > fees[0]: # ์๊ธ ๊ณ์ฐ
answer[num] = fees[1] + (math.ceil((v - fees[0])/fees[2]))*fees[3]
else:
answer[num] = fees[1]
return list(dict(sorted(answer.items())).values())
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฃผ์ฐจ ์ด์ฉ ๋ด์ญ๋๋ก ์๊ฐ์ ๋์ ํ๊ณ , ๋ง์ง๋ง ์ถ์ฐจ ๊ธฐ๋ก์ด ์๋ ๊ฒฝ์ฐ๋ ๋ฐ๋ก ํฉํ๋ค.
- ์๊ธ์ ๊ณ์ฐํ๋ค.
- math.ceil()์ ์ด์ฉํด ์ฌ๋ฆผ์ ๊ตฌํํ๋ค.
- ๋์ ๋๋ฆฌ key๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ values๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐํํ๋ค.
๐ธ ๋ค๋ฅธ ํ์ด ๐ธ
from collections import defaultdict
def solution(fees, records):
basic_t, base_price, unit_t, unit_price = fees
def price(log, fees): # 2 : ์ฐจ ๋ฒํธ๋ณ๋ก ๊ฐ๊ฒฉ ์ธก์ (1๋ฒ ๊ฒฐ๊ณผ ์ฌ์ฉ)
if len(log) % 2:
log.append(23*60+59)
t = sum(log[i+1] - log[i] for i in range(0, len(log), 2))
return unit_price * -(-max(0, t-basic_t) // unit_t) + base_price
log = defaultdict(list)
for record in records: # 1 : ์ฐจ ๋ฒํธ๋ณ๋ก ๋ก๊ทธ ์ทจํฉ (defaultdict(list))
t, n, _ = record.split()
h, m = map(int, t.split(':'))
log[n].append(60*h+ m)
return [price(log[n], fees) for n in sorted(log)] # 3 : ์ฐจ ๋ฒํธ์์ผ๋ก ์ ๋ ฌํด์ ๋ฐํ
- 1 : ์ฐจ ๋ฒํธ๋ณ๋ก ์ด์ฉ ์๊ฐ ๋ก๊ทธ๋ฅผ ์ทจํฉํ๋ค.
- 2 : ๋ก๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด์ฉ ์๊ฐ์ ๊ณ์ฐํ๋ค
- ๋ก๊ทธ ์๊ฐ ์ง์๊ฐ ์๋๋ฉด ์ถ์ฐจ๊ฐ ๋ชจ์๋ฅด๋ค๋ ๊ฒ์ด๋ฏ๋ก 23:59๋ถ ์ถ์ฐจ๋ฅผ ์ถ๊ฐํ๋ค.
- ์ด์ฉ ์๊ฐ์ ๋์ ํฉ์ฐํ๋ค.
- ์ฌ๋ฆผ์ ์ ์ฉํด ์๊ธ์ ๊ณ์ฐํ๊ณ ๋ฐํํ๋ค.
- 3 : ์ฐจ๋ ๋ฒํธ์์ผ๋ก ์ ๋ ฌํด ๋ฐํํ๋ค.
๐ธ end ๐ธ
- ๋ฌธ์ ๋ฅผ ์ฒ์์ ์๋ชป ์ดํดํ๊ณ , ๋์ ํฉ ํ ๊ณ์ฐํด์ผํ๋๊ฑธ ๋ค๋ฆ๊ฒ ์์์ ํธ๋๋ฐ ์๊ฐ์ด ๋ง์ด๊ฑธ๋ ธ๋ค.
- ๋์
๋๋ฆฌ๋ฅผ ๊ฒจ์ฐ๊ฒจ์ฐ ์ฌ์ฉํด ํ์ด๋๋๋ฐ, ๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋ ๋๋ฌด ๊น๋ํ๊ฒ ํ์ด์ ์กฐ๊ธ ์๋ฌด๋ฃฉํด์ก๋ค.
- -(-max(0, t-basic-t) // unit_t) ๋ถ๋ถ์์ ์ฌ๋ฆผ์ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค๋๊ฑธ ๋ฐฐ์ ๋ค.
( //๋ ๋ด๋ฆผ์ด๋ฏ๋ก ์์์์ ๋ด๋ฆผํด์ ๋ค์ ์์๋ก ๋ง๋ค๋ฉด ์ฌ๋ฆผ์ด ๋๋ค )
- -(-max(0, t-basic-t) // unit_t) ๋ถ๋ถ์์ ์ฌ๋ฆผ์ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค๋๊ฑธ ๋ฐฐ์ ๋ค.
- ๋์ ๋๋ฆฌ๋ฅผ ๋ ์ ์ธ ์ ์๋๋ก ์ฐ์ตํด์ผ๊ฒ ๋ค.
728x90
'CodingTest > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1789 : ์๋ค์ ํฉ (0) | 2022.10.13 |
---|---|
Lv.2 : ๋ฉ๋ด ๋ฆฌ๋ด์ผ (0) | 2022.09.20 |
Lv.1 : ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.09.19 |
Lv.2 : ์คํฌํธ๋ฆฌ (0) | 2022.09.18 |
BOJ_1012 : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.09.15 |