λ¬Έμ
νλ‘κ·Έλλ¨Έμ€ - μΆμ νΈλν½
νμ΄ κ³Όμ
μ£Όμ΄μ§ λ¬Έμμ΄μ μ μ ν λ³νν λ€ μΌμ ν¬κΈ°μ μλμ°μ μ΅λν λ§μ΄ κ²ΉμΉλ νΈλν½μ μλ₯Ό ꡬνλ©΄ λλ€.
λ¬Έμμ΄ μ²λ¦¬νκΈ°
λ°λ¦¬μΈμ»¨λ λ¨μμ μκ° κ³μ°μ μ²μμ΄λΌμ μ΄λ»κ² ν΄μ€μΌν μ§ κ³ λ―Όνλ€κ° float
νμΌλ‘ λ³ννμ¬
μ¬μ©νλ©΄ ν¨μ¨μ μΌ κ² κ°μμ μ΄ λ°©λ²μ μ¬μ©νλ€.
λ€λ§ μ λ λΆν° νΈλν½μ΄ μμ λμμ κ²½μ° νΈλν½ μ’
λ£ μκ° - μμλ μκ°
μ΄ μμκ° λλ κ²½μ°κ° μμ΄μ
μ΄ λΆλΆμ λν μμΈμ²λ¦¬λ λ°λ‘ ν΄μ€μΌ νλ€.
λν float
νμΌλ‘ λ³ννκ³ μ°μ μ°μ°μ μννλ©΄ μμμ μ리μ μμνμ§ λͺ»ν κ°λ€μ΄ μΆλ ₯λλ κ²½μ°κ° μμ΄μ round
ν¨μλ₯Ό ν΅ν΄ μμμ μ리μλ₯Ό κ³ μ μμΌμ£Όλ μμ
μ΄ νμνλ€.
μ΅λ μ²λ¦¬λ κ³μ°νκΈ°
μ΅λ μ²λ¦¬λμ ꡬνλ λΆλΆμ΄ μμλ³΄λ€ μ’ κΉλ€λ‘μ λ€.
μ²μμλ 첫 νΈλν½μ κΈ°μ€μΌλ‘ λ°λ¦¬μΈμ»¨λ λ¨μ
λ‘ μλμ°λ₯Ό μ¦κ°μν€λ©΄μ μ 체 νμμ μννμ§λ§ μκ°μ΄κ³Ό
κ° λ°μνλ€.
μ΅μ νλ₯Ό μν΄ Greedyν λ°©λ²μΌλ‘ μ κ·Όν΄μ λλλ μκ°μ κΈ°μ€μΌλ‘ νΈλν½ κ°―μλ₯Ό 체ν¬νλ €κ³ νμ§λ§
μ΄ κ²½μ°μ κ²μ¬λ₯Ό λͺ»νκ³ μ§λμΉλ λΆλΆμ΄ μμ΄μ λͺ κ°μ§ ν
μ€νΈμΌμ΄μ€μ λν΄ μλͺ»λ κ²°κ³Όλ₯Ό μΆλ ₯ν¨μ λ°λΌ λ€λ₯Έ λ°©λ²μ΄ νμνλ€.
λλ¬΄μ§ μ΅μ ν λ°©λ²μ΄ λ μ€λ₯΄μ§ μμ μΉ΄μΉ΄μ€ λ¬Έμ ν΄μ€μ μ°Έκ³ νμ¬ νΈλν½μ΄ μλ‘ λ€μ΄μ€κ±°λ λλλ λΆλΆμμλ§
μλμ°μ κ²ΉμΉλ νΈλν½ κ°―μλ₯Ό μΈμ΄μ£Όλ©΄ λλ€λ κ²μ μκ² λμλ€.
λ¬Έμ λ₯Ό μ°¨κ·Όμ°¨κ·Ό λ°μ Έλ³΄λ μ°μ΅μ΄ μμ§ λ§μ΄ νμν κ² κ°λ€.
μ½λ
# μμμκ°κ³Ό λλλ μκ°μ λ°ν
def parse_time(traffic_change, time_str):
end, duration = time_str.split()[1:]
duration = float(duration.split('s')[0])
end_h, end_m, end_s = list(map(float, end.split(':')))
end = 3600 * end_h + 60 * end_m + end_s
start = end - duration + 0.001
if start < 0:
start = 0
traffic_change.add(round(start, 3))
traffic_change.add(round(end, 3))
return round(start, 3), round(end, 3)
def solution(lines):
answer = 0
traffic_change = set()
timeline = []
for line in lines:
timeline.append(parse_time(traffic_change, line))
# λλλ μκ°μΌλ‘ μ€λ¦μ°¨μ μ λ ¬ - μμνλ μκ°μΌλ‘ μ λ ¬ν΄λ μκ΄ μμ λ― νλ€.
timeline.sort(key=lambda x: x[1])
for point in traffic_change:
window = point
window_end = round(window + 1.0 - 0.001, 3)
hit = []
for traffic in timeline:
traffic_start = traffic[0]
traffic_end = traffic[1]
# νμ¬ window μ ν΄λΉνμ§ μλλ€λ©΄
if traffic_start > window_end or traffic_end < window:
continue
else:
hit.append(traffic)
answer = max(answer, len(hit))
return answer
lines = [
"2016-09-15 20:59:57.421 0.351s",
"2016-09-15 20:59:58.233 1.181s",
"2016-09-15 20:59:58.299 0.8s",
"2016-09-15 20:59:58.688 1.041s",
"2016-09-15 20:59:59.591 1.412s",
"2016-09-15 21:00:00.464 1.466s",
"2016-09-15 21:00:00.741 1.581s",
"2016-09-15 21:00:00.748 2.31s",
"2016-09-15 21:00:00.966 0.381s",
"2016-09-15 21:00:02.066 2.62s"
]
print(solution(lines)) # κ²°κ³Όλ 7
'π algorithm > programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€ Level 2 - ν° μ λ§λ€κΈ° (0) | 2021.03.01 |
---|---|
νλ‘κ·Έλλ¨Έμ€ Level 3 - μ¬ μ°κ²°νκΈ° (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 4 - κ²μ 맡 μ΅λ¨κ±°λ¦¬ (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 3 - μ κ΅ μ¬μ¬ (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 3 - λΈλ‘ μ΄λνκΈ° (0) | 2021.03.01 |
π¬ λκΈ