https://school.programmers.co.kr/learn/courses/30/lessons/42586
λ¬Έμ
λ¬Έμ μ€λͺ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ
μ μν μ€μ
λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€.
λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ κΈ°λ₯λ³΄λ€ λ¨Όμ κ°λ°λ μ μκ³ , μ΄λ λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λ©λλ€.
λ¨Όμ λ°°ν¬λμ΄μΌ νλ μμλλ‘ μμ
μ μ§λκ° μ ν μ μ λ°°μ΄ progressesμ κ° μμ
μ κ°λ° μλκ° μ ν μ μ λ°°μ΄ speedsκ° μ£Όμ΄μ§ λ κ° λ°°ν¬λ§λ€ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ ν μ¬ν
- μμ μ κ°μ(progresses, speedsλ°°μ΄μ κΈΈμ΄)λ 100κ° μ΄νμ λλ€.
- μμ μ§λλ 100 λ―Έλ§μ μμ°μμ λλ€.
- μμ μλλ 100 μ΄νμ μμ°μμ λλ€.
- λ°°ν¬λ ν루μ ν λ²λ§ ν μ μμΌλ©°, ν루μ λμ μ΄λ£¨μ΄μ§λ€κ³ κ°μ ν©λλ€. μλ₯Ό λ€μ΄ μ§λμ¨μ΄ 95%μΈ μμ
μ
κ°λ° μλκ° ν루μ 4%λΌλ©΄ λ°°ν¬λ 2μΌ λ€μ μ΄λ£¨μ΄μ§λλ€.
μ μΆλ ₯ μ
progresses | speeds | return |
[93, 30, 55] | [1, 30, 5] | [2, 1] |
[95, 90, 99, 99, 80, 99] | [1, 1, 1, 1, 1] | [1, 3, 2] |
μμ€ μ½λ
# 1
import math
def solution(progresses, speeds):
n = len(progresses)
answers = []
# κ° μμ
μ΄ 100% λκΈ° μν΄ κ±Έλ¦¬λ μκ°
times = [math.ceil((100-progresses[i])/speeds[i]) for i in range(n)]
cnt = 1 # μλ£λ μμ
μ μ
max_time = times[0] # 첫 λ²μ§Έ μμ
μ μκ°μ max_timeμΌλ‘ μ§μ
# μκ° λ¦¬μ€νΈλ₯Ό λλ©΄μ max_timeκ³Ό λΉκ΅
for i in range(1,n):
if times[i] <= max_time: # 1. νμν μκ°μ΄ max_timeλ³΄λ€ μ μΌλ©΄
cnt += 1 # μμ
μ΄ μλ£λ κ²μ΄λ―λ‘ μμ
μ μ +1
else: # 2. νμν μκ°μ΄ max_timeλ³΄λ€ λ§μΌλ©΄
answers.append(cnt) # νμ¬κΉμ§ μλ£ν μμ
μ μλ₯Ό answersμ μΆκ°
max_time = times[i] # max_timeμ νμ¬ μμ
μ λ¨μμκ°μΌλ‘ λ³κ²½
cnt = 1 # μμ
μ μ μ΄κΈ°ν
answers.append(cnt) # 3. λ§μ§λ§ μμ
μ΄ μΆκ°λμ§ μκ³ forλ¬Έ μ’
λ£λμμΌλ―λ‘ λ§μ§λ§ μμ
μ μΆκ°
return answers
νμ΄ #1
- μ£Όμ΄μ§ μμ μ μλ₯Ό nμΌλ‘ μ μ
- μλμ 곡μμ μ°Έκ³ νμ¬ κ° μμ
μ΄ μλ£λλ €λ©΄ 걸리λ μκ°μ times 리μ€νΈλ‘ μμ±
- progresses(νμ¬ μλ£λ μμ μ μ λ) + (speeds(μμ μ μλ) * times(μμ μκ°) = 100%
- cnt : μλ£λ μμ μ μ / max_time : μλΆλΆ μμ μ΄ μλ£λλ €λ©΄ 걸리λ μκ°
- νμ¬ μμ
μ λ¨μ μκ°(times[i])κ³Ό κΈ°μ€μ΄ λλ μκ°(max_time)μ λΉκ΅
- times[i] κ° max_timeλ³΄λ€ μ λ€λ©΄ νμ¬μ μμ μ΄ μλ£λ κ²μ΄λ―λ‘ cnt + 1
- times[i]κ° max_timeλ³΄λ€ λ§λ€λ©΄ μμ
μ΄ μλ£λκΈ°κΉμ§ μκ°μ΄ λ νμν κ²
- νμ¬κΉμ§ μλ£λ μμ μ μλ₯Ό answersμ μΆκ°
- κΈ°μ€μ΄ λλ μκ°(max_time)μ νμ¬ μκ°μΌλ‘ λ°κΎΈκ³ cntλ μ΄κΈ°ν
# 2
def solution(progresses, speeds):
answers = []
time = 0 # μμ
μ΄ νμν μκ°
cnt = 0 # μλ£λ μμ
μ μ
while len(progresses) > 0:
# 1. μ§ν μν©μ΄ 100 μ΄μμ΄ λ κ²½μ°
if(progresses[0] + time * speeds[0]) >= 100:
progresses.pop(0) # μμ
μ΄ μλ£λ κ²μ΄λ―λ‘ progressesμμ ν΄λΉ μμ
μ κ±°
speeds.pop(0) # μμ
κ³Ό μλμ μΈλ±μ€λ₯Ό λ§μΆμ΄μΌ νλ―λ‘ speedsμμλ μ κ±°
cnt += 1 # μμ
μ μ + 1
# 2. μ§ν μν©μ΄ 100 λ―Έλ§μΈ κ²½μ°
else:
if cnt > 0: # μλ£λ μμ
μ΄ μλ€λ©΄
answers.append(cnt) # νμ¬κΉμ§ μλ£ν μμ
μ answersμ μΆκ°
cnt = 0 # μμ
μ μ μ΄κΈ°ν
else: # μλ£λ μμ
μ΄ μλ€λ©΄
time += 1 # νμν μκ°μ μΆκ°
# 3. λ§μ§λ§ μμ
μ΄ μΆκ°λμ§ μκ³ whileλ¬Έ μ’
λ£λμμΌλ―λ‘ λ§μ§λ§ μμ
μ μΆκ°
answers.append(cnt)
return answers
νμ΄ #2
- μμ μ΄ νμν μκ°κ³Ό μλ£λ μμ μ μλ₯Ό κ°κ° time, cntλ‘ μ μ
- μ§ν μ€μΈ μμ
μ΄ μλ 리μ€νΈ(progresses)μ κΈΈμ΄κ° 0λ³΄λ€ ν¬λ©΄ μλμ λ΄μ©μ λ°λ³΅ν΄μ μ§ν
- μλμ 곡μμ΄ 100μ΄μμ΄λ©΄ μμ
μ΄ μλ£λ κ²μ΄λ―λ‘ progressesμ speedμμ ν΄λΉ μμ
μ κ±°
- progresses(νμ¬ μλ£λ μμ μ μ λ) + (speeds(μμ μ μλ) * times(μμ μκ°) = 100%
- μλ£λ μμ μ μ cnt + 1
- cntκ° 0λ³΄λ€ ν¬λ€λ©΄ μλ£λ μμ μ΄ μλ κ²μ΄λ―λ‘ answersμ μλ£λ μμ μ μ μΆκ°νκ³ μ΄κΈ°ν
- μλ£λ μμ μ΄ μλ€λ©΄ μκ°μ΄ λ νμν κ²μ΄λ―λ‘ μκ°μ μΆκ°
- μλμ 곡μμ΄ 100μ΄μμ΄λ©΄ μμ
μ΄ μλ£λ κ²μ΄λ―λ‘ progressesμ speedμμ ν΄λΉ μμ
μ κ±°
μ½κ² ν릴 κ² κ°μλλ° μκ·Όν νκΈ° μ΄λ €μ΄ λ¬Έμ μλ€.....걸리λ μκ°μ κΈ°μ€μΌλ‘ λκ³ λΉκ΅νλ λ°©λ²κ³Ό μ§νμν©μ νλ¨ν΄μ λΉκ΅νλ 2κ°μ§ λ°©λ²μ΄ μμ΄μ νΈν λ°©λ²μΌλ‘ μ¬μ©νλ©΄ μ’μ κ² κ°λ€.
'μ½λ© λ¬Έμ νμ΄ π» > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ / νμ΄μ¬] Lv.2 μ£Όμκ°κ²© (0) | 2024.07.01 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ / νμ΄μ¬] Lv.2 κ΄νΈ νμ νκΈ° (0) | 2024.07.01 |
[νλ‘κ·Έλλ¨Έμ€ / νμ΄μ¬] Lv.1 κ°μ₯ λ§μ΄ λ°μ μ λ¬Ό (2) | 2024.01.08 |
[νλ‘κ·Έλλ¨Έμ€ / νμ΄μ¬] Lv.1 [PCCP κΈ°μΆλ¬Έμ ] 1λ² / λΆλ κ°κΈ° (1) | 2024.01.07 |
[νλ‘κ·Έλλ¨Έμ€ / νμ΄μ¬] Lv.1 곡μ μ°μ± (0) | 2024.01.05 |