๋ฌธ์ ์ค๋ช
์ฃผ์ฐจ์ฅ์ ์๊ธํ์ ์ฐจ๋์ด ๋ค์ด์ค๊ณ (์ ์ฐจ) ๋๊ฐ(์ถ์ฐจ) ๊ธฐ๋ก์ด ์ฃผ์ด์ก์ ๋, ์ฐจ๋๋ณ๋ก ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํ๋ ค๊ณ ํฉ๋๋ค. ์๋๋ ํ๋์ ์์๋ฅผ ๋ํ๋ ๋๋ค.
- ์๊ธํ
- ์ /์ถ์ฐจ ๊ธฐ๋ก
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
- ์ด๋ค ์ฐจ๋์ด ์
์ฐจ๋ ํ์ ์ถ์ฐจ๋ ๋ด์ญ์ด ์๋ค๋ฉด, 23:59์ ์ถ์ฐจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- 0000๋ฒ ์ฐจ๋์ 18:59์ ์ ์ฐจ๋ ์ดํ, ์ถ์ฐจ๋ ๋ด์ญ์ด ์์ต๋๋ค. ๋ฐ๋ผ์, 23:59์ ์ถ์ฐจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- 00:00๋ถํฐ 23:59๊น์ง์ ์ /์ถ์ฐจ ๋ด์ญ์ ๋ฐํ์ผ๋ก ์ฐจ๋๋ณ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ๊ณ์ฐํ์ฌ ์๊ธ์ ์ผ๊ด๋ก ์ ์ฐํฉ๋๋ค.
- ๋์ ์ฃผ์ฐจ ์๊ฐ์ด ๊ธฐ๋ณธ ์๊ฐ์ดํ๋ผ๋ฉด, ๊ธฐ๋ณธ ์๊ธ์ ์ฒญ๊ตฌํฉ๋๋ค.
- ๋์ ์ฃผ์ฐจ ์๊ฐ์ด ๊ธฐ๋ณธ ์๊ฐ์ ์ด๊ณผํ๋ฉด, ๊ธฐ๋ณธ ์๊ธ์ ๋ํด์, ์ด๊ณผํ ์๊ฐ์ ๋ํด์ ๋จ์ ์๊ฐ ๋ง๋ค ๋จ์ ์๊ธ์ ์ฒญ๊ตฌํฉ๋๋ค.
- ์ด๊ณผํ ์๊ฐ์ด ๋จ์ ์๊ฐ์ผ๋ก ๋๋์ด ๋จ์ด์ง์ง ์์ผ๋ฉด, ์ฌ๋ฆผํฉ๋๋ค.
- ⌈a⌉ : a๋ณด๋ค ์์ง ์์ ์ต์์ ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฌ๋ฆผ์ ์๋ฏธํฉ๋๋ค.
์ฃผ์ฐจ ์๊ธ์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด fees, ์๋์ฐจ์ ์ /์ถ์ฐจ ๋ด์ญ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด records๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ฐจ๋ ๋ฒํธ๊ฐ ์์ ์๋์ฐจ๋ถํฐ ์ฒญ๊ตฌํ ์ฃผ์ฐจ ์๊ธ์ ์ฐจ๋ก๋๋ก ์ ์ ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- fees์ ๊ธธ์ด = 4
- fees[0] = ๊ธฐ๋ณธ ์๊ฐ(๋ถ)
- 1 ≤ fees[0] ≤ 1,439
- fees[1] = ๊ธฐ๋ณธ ์๊ธ(์)
- 0 ≤ fees[1] ≤ 100,000
- fees[2] = ๋จ์ ์๊ฐ(๋ถ)
- 1 ≤ fees[2] ≤ 1,439
- fees[3] = ๋จ์ ์๊ธ(์)
- 1 ≤ fees[3] ≤ 10,000
- 1 ≤ records์ ๊ธธ์ด ≤ 1,000
- records์ ๊ฐ ์์๋ "์๊ฐ ์ฐจ๋๋ฒํธ ๋ด์ญ" ํ์์ ๋ฌธ์์ด์ ๋๋ค.
- ์๊ฐ, ์ฐจ๋๋ฒํธ, ๋ด์ญ์ ํ๋์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๊ฐ์ ์ฐจ๋์ด ์
์ฐจ๋๊ฑฐ๋ ์ถ์ฐจ๋ ์๊ฐ์ ๋ํ๋ด๋ฉฐ, HH:MM ํ์์ ๊ธธ์ด 5์ธ ๋ฌธ์์ด์
๋๋ค.
- HH:MM์ 00:00๋ถํฐ 23:59๊น์ง ์ฃผ์ด์ง๋๋ค.
- ์๋ชป๋ ์๊ฐ("25:22", "09:65" ๋ฑ)์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ฐจ๋๋ฒํธ๋ ์๋์ฐจ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ, `0'~'9'๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด 4์ธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ด์ญ์ ๊ธธ์ด 2 ๋๋ 3์ธ ๋ฌธ์์ด๋ก, IN ๋๋ OUT์ ๋๋ค. IN์ ์ ์ฐจ๋ฅผ, OUT์ ์ถ์ฐจ๋ฅผ ์๋ฏธํฉ๋๋ค.
- records์ ์์๋ค์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์ฃผ์ด์ง๋๋ค.
- records๋ ํ๋ฃจ ๋์์ ์ /์ถ์ฐจ๋ ๊ธฐ๋ก๋ง ๋ด๊ณ ์์ผ๋ฉฐ, ์ ์ฐจ๋ ์ฐจ๋์ด ๋ค์๋ ์ถ์ฐจ๋๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ๊ฐ์ ์๊ฐ์, ๊ฐ์ ์ฐจ๋๋ฒํธ์ ๋ด์ญ์ด 2๋ฒ ์ด์ ๋ํ๋ด์ง ์์ต๋๋ค.
- ๋ง์ง๋ง ์๊ฐ(23:59)์ ์ ์ฐจ๋๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์๋์ ์๋ฅผ ํฌํจํ์ฌ, ์๋ชป๋ ์
๋ ฅ์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ฃผ์ฐจ์ฅ์ ์๋ ์ฐจ๋์ด ์ถ์ฐจ๋๋ ๊ฒฝ์ฐ
- ์ฃผ์ฐจ์ฅ์ ์ด๋ฏธ ์๋ ์ฐจ๋(์ฐจ๋๋ฒํธ๊ฐ ๊ฐ์ ์ฐจ๋)์ด ๋ค์ ์ ์ฐจ๋๋ ๊ฒฝ์ฐ
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ์๊ธํ
- ์ /์ถ์ฐจ ๊ธฐ๋ก
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
- 3961๋ฒ ์ฐจ๋์ 2๋ฒ์งธ ์ ์ฐจ๋ ํ์๋ ์ถ์ฐจ๋ ๋ด์ญ์ด ์์ผ๋ฏ๋ก, 23:59์ ์ถ์ฐจ๋์๋ค๊ณ ๊ฐ์ฃผํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- ์๊ธํ
- ์ /์ถ์ฐจ ๊ธฐ๋ก
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
- 1234๋ฒ ์ฐจ๋์ ์ถ์ฐจ ๋ด์ญ์ด ์์ผ๋ฏ๋ก, 23:59์ ์ถ์ฐจ๋์๋ค๊ณ ๊ฐ์ฃผํฉ๋๋ค.
ํ์ด ์ฝ๋
import math
def convert_time_to_minute(intime, outtime):
inhour, inminute = map(int, intime.split(':'))
outhour, outminute = map(int, outtime.split(':'))
return (outhour * 60 + outminute) - (inhour * 60 + inminute)
def solution(fees, records):
base_time, base_fee, unit_time, unit_fee = fees
hash = {}
for record in records:
time, car_num, whether = record.split()
if whether == 'IN':
if car_num not in hash:
hash[car_num] = [time, 0, True]
else:
hash[car_num][0] = time
hash[car_num][2] = True
else:
in_time = hash[car_num][0]
minute = convert_time_to_minute(in_time, time)
hash[car_num][1] += minute
hash[car_num][2] = False
hash[car_num][0] = ''
for key in hash:
if hash[key][2]:
minute = convert_time_to_minute(hash[key][0], '23:59')
hash[key][1] += minute
hash[key][2] = False
if hash[key][1] <= base_time:
hash[key][1] = base_fee
else:
hash[key][1] = base_fee + math.ceil((hash[key][1] - base_time) / unit_time) * unit_fee
answer = [item[1][1] for item in sorted(hash.items())]
return answer
๋์ ๋๋ฆฌ(ํด์)์ ๊ตฌํ๋ฌธ์ ์ ํด๋นํ๋ค.
์ฝ๋๊ฐ ์กฐ๊ธ ๊ธธ๊ณ ๋์กํด ๋ณด์ผ ๋ฟ์ด์ง, ์ค์ ๋ฏ์ด๋ณด๋ฉด ๋ณ ๊ฒ ์๋ ๋ฌธ์ ์ด๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋คํธ์ํฌ (level3, python) (0) | 2022.09.12 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฆฐํฐ (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (level2, python) (0) | 2022.09.12 |