
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€.
λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ κΈ°λ₯λ³΄λ€ λ¨Όμ κ°λ°λ μ μκ³ , μ΄λ λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λ©λλ€.
λ¨Όμ λ°°ν¬λμ΄μΌ νλ μμλλ‘ μμ μ μ§λκ° μ ν μ μ λ°°μ΄ progressesμ κ° μμ μ κ°λ° μλκ° μ ν μ μ λ°°μ΄ speedsκ° μ£Όμ΄μ§ λ κ° λ°°ν¬λ§λ€ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
| progresses | speeds | return |
|---|---|---|
| [93, 30, 55] | [1, 30, 5} | [2, 1] |
| [95, 90, 99, 99, 80, 99] | [1, 1, 1, 1, 1, 1] | [1, 3 2] |
첫 λ²μ§Έ κΈ°λ₯μ 93% μλ£λμ΄ μκ³ ν루μ 1%μ© μμ
μ΄ κ°λ₯νλ―λ‘ 7μΌκ° μμ
ν λ°°ν¬κ° κ°λ₯ν©λλ€.
λ λ²μ§Έ κΈ°λ₯μ 30%κ° μλ£λμ΄ μκ³ ν루μ 30%μ© μμ
μ΄ κ°λ₯νλ―λ‘ 3μΌκ° μμ
ν λ°°ν¬κ° κ°λ₯ν©λλ€. νμ§λ§ μ΄μ 첫 λ²μ§Έ κΈ°λ₯μ΄ μμ§ μμ±λ μνκ° μλκΈ° λλ¬Έμ 첫 λ²μ§Έ κΈ°λ₯μ΄ λ°°ν¬λλ 7μΌμ§Έ λ°°ν¬λ©λλ€.
μΈ λ²μ§Έ κΈ°λ₯μ 55%κ° μλ£λμ΄ μκ³ ν루μ 5%μ© μμ
μ΄ κ°λ₯νλ―λ‘ 9μΌκ° μμ
ν λ°°ν¬κ° κ°λ₯ν©λλ€.
λ°λΌμ 7μΌμ§Έμ 2κ°μ κΈ°λ₯, 9μΌμ§Έμ 1κ°μ κΈ°λ₯μ΄ λ°°ν¬λ©λλ€.
λͺ¨λ κΈ°λ₯μ΄ ν루μ 1%μ© μμ μ΄ κ°λ₯νλ―λ‘, μμ μ΄ λλκΈ°κΉμ§ λ¨μ μΌμλ κ°κ° 5μΌ, 10μΌ, 1μΌ, 1μΌ, 20μΌ, 1μΌμ λλ€. μ΄λ€ κΈ°λ₯μ΄ λ¨Όμ μμ±λμλλΌλ μμ μλ λͺ¨λ κΈ°λ₯μ΄ μμ±λμ§ μμΌλ©΄ λ°°ν¬κ° λΆκ°λ₯ν©λλ€.
λ°λΌμ 5μΌμ§Έμ 1κ°μ κΈ°λ₯, 10μΌμ§Έμ 3κ°μ κΈ°λ₯, 20μΌμ§Έμ 2κ°μ κΈ°λ₯μ΄ λ°°ν¬λ©λλ€.
λλ μΈλ±μ€ λ³μλ₯Ό νλ λ§λ€μ΄μ λ¬Έμ μ μ κ·Όμ ν΄λ³΄μλ€.
νμ¬ μΈλ±μ€ μμμ κ°μ΄ 100 μ΄μμ΄λ©΄, μ¦, μ§λκ° 100% μ΄μμ΄λΌλ©΄, μ§λκ° 100% μλ κ°μ λ§λ λκΉμ§, μΈλ±μ€λ₯Ό μ¦κ°μμΌ μ£Όλ©΄μ λμμ λ°°ν¬λ κΈ°λ₯μ κ°μλ₯Ό 1μ© μ¦κ°μμΌμ£Όλ©΄ λ κ²μ΄λΌ μκ°νκ³ μ½λλ₯Ό μμ±νλ€.
import java.util.*;
class Solution {
public ArrayList<Integer> solution(int[] progresses, int[] speeds) {
int releaseIndex = 0;
ArrayList<Integer> answer = new ArrayList<>();
while (releaseIndex < progresses.length) {
for (int j = 0; j < progresses.length; j++) {
progresses[j] += speeds[j];
}
int count = 0;
while (releaseIndex < progresses.length && progresses[releaseIndex] >= 100) {
releaseIndex++;
count ++;
}
if (count > 0) {
answer.add(count);
}
}
return answer;
}
}
μ°μ λμμ 배보λ κΈ°λ₯μ κ°μλ₯Ό λ΄λ ArrayList answerλ₯Ό μ μΈν΄ μ£Όμλ€.
progressesλ₯Ό μμ°¨μ μΌλ‘ νμνκΈ° μν΄ releaseIndexλ μ μΈν΄ μ£Όμκ³ , progressesμ κΈΈμ΄λ§νΌ μννλλ‘ λ°λ³΅λ¬Έμ λ§λ€μλ€.
μΌλ¨, μμ
μ ν λ² μ§νμμΌ μ£ΌκΈ° μν΄ κ°κ°μ μ§λμ κ°κ°μ speedλ₯Ό λν΄μ£Όμλ€.
μ΄μ , λ§μ½, releaseIndexκ° κ°λ¦¬ν€λ μ§λκ° 100%λΌλ©΄,
κ·Έλ¦¬κ³ , κ·Έ λ€μ μ§λκ° 100%μΈ μμκ° λ μ‘΄μ¬νλ€λ©΄,
κ·Έ κ°μλ§νΌ λ°°ν¬λ₯Ό μμΌμ£Όμ΄μΌ νλ€.
μ΄λ₯Ό μ²λ¦¬νκΈ° μν΄ νμ¬ releaseIndexκ° κ°λ¦¬ν€λ μ§λκ° 100% μ΄μμ΄λΌλ 쑰건μ λ°λ³΅λ¬Έμ λ§λ€μ΄ releaseIndexκ° λ€μ μΈλ±μ€λ‘ μ΄λνλλ‘ 1μ μ¦κ°μμΌ μ£Όμκ³ , λ°°ν¬λ κΈ°λ₯μ κ°μλ₯Ό λνλ΄λ countλ³μμλ 1μ μ¦κ°μμΌ μ£Όμλ€.
κ·Έλ κ² ν λ²μ λ°°ν¬λ κΈ°λ₯μ κ°μλ₯Ό answerμ μΆκ°ν΄μ€μΌλ‘μ¨ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμλ€!

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
// κ° κΈ°λ₯μ κ°λ°μ΄ μλ£λλ λ° νμν λ μλ₯Ό μ μ₯ν 리μ€νΈ
List<Integer> days = new ArrayList<>();
// κ° κΈ°λ₯λ³λ‘ κ°λ° μλ£κΉμ§ 걸리λ λ μλ₯Ό κ³μ°
for (int i = 0; i < progresses.length; i++) {
int progress = progresses[i]; // νμ¬ μμ
μ μ§λ
int speed = speeds[i]; // νμ¬ μμ
μ κ°λ° μλ
// μμ
μλ£κΉμ§ 걸리λ λ μ κ³μ°
int daysToComplete = (int) Math.ceil((100 - progress) / speed);
// 리μ€νΈμ κ³μ°λ λ μ μΆκ°
days.add(daysToComplete);
}
// κ°λ° μλ£κΉμ§ 걸리λ λ μλ₯Ό νμ μ μ₯
Queue<Integer> queue = new LinkedList<>(days);
// κ° λ°°ν¬μΌμ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό μ μ₯ν 리μ€νΈ
List<Integer> result = new ArrayList<>();
// νκ° λΉ λκΉμ§ λ°λ³΅
while (!queue.isEmpty()) {
// νμ¬ μ²λ¦¬ν κΈ°λ₯μ κ°λ° μλ£κΉμ§ 걸리λ λ μ
int currentDay = queue.poll();
int count = 1; // νμ¬ κΈ°λ₯μ ν¬ν¨νμ¬ λ°°ν¬λλ κΈ°λ₯ μ (μ΅μ 1κ°λ λ°°ν¬λ¨)
// νμ¬ κΈ°λ₯μ΄ λ°°ν¬λ λ μ λ°°ν¬λ μ μλ νμ κΈ°λ₯λ€ νμΈ
while (!queue.isEmpty() && queue.peek() <= currentDay) {
queue.poll(); // νμ κΈ°λ₯μ νμμ μ κ±°
count++; // λ°°ν¬λλ κΈ°λ₯ μ μ¦κ°
}
// λ°°ν¬λλ κΈ°λ₯μ μλ₯Ό κ²°κ³Ό 리μ€νΈμ μΆκ°
result.add(count);
}
// κ²°κ³Ό 리μ€νΈλ₯Ό λ°°μ΄λ‘ λ³ννμ¬ λ°ν
return result.stream().mapToInt(i -> i).toArray();
}
}
μ건 μ€λ μΈμ μμ λ³Έ λ€λ₯Έ λΆμ μ½λμ΄λ€
κ° κΈ°λ₯λ³λ‘ κ°λ° μλ£κΉμ§ 걸리λ λ μλ₯Ό λ¨Όμ κ³μ°ν λ€μ,
νλ₯Ό μ¬μ©ν΄ νμ¬ κΈ°λ₯κ³Ό νμ κΈ°λ₯μ λ°°ν¬ κ°λ₯ μ¬λΆλ₯Ό λ°μ§λ©΄μ νμμ μμλ€μ νλμ© μ κ±°νλ©° μ«μλ₯Ό μΉ΄μ΄νΈ ν΄μ£Όλ λ°©μμ΄λ€.
λ μ§λ₯Ό 미리 κ³μ°ν΄μ νΈλ λ°©λ²λ μμλ€λ..!
μ€λλ ν μ λ°°μ°κ³ κ°λλ€!πͺ