| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- μλ°
- javascript
- kotlin algorithm
- μ½νλ¦° μ€ν
- μλ°μ€ν¬λ¦½νΈ
- νμ΄μ¬
- μλ° μκ³ λ¦¬μ¦
- Swift
- Kotlin
- python
- Java
- pnpm
- μκ³ λ¦¬μ¦
- λ―Έκ΅λ°°λΉμ£Όν¬μ
- νλ‘κ·Έλλ¨Έμ€
- java μ½λ© ν μ€νΈ
- kotlin μκ³ λ¦¬μ¦
- λ°°λΉμ£Ό
- λ°±μ€
- μ½νλ¦°
- νμ½ν
- linux
- CI/CD
- Vue.js
- vue3
- μ½νλ¦° μκ³ λ¦¬μ¦
- js
- GIT
- λ°±μ€ μ½νλ¦°
- λ―Έκ΅μ£Όμ
- Today
- Total
π μ μ΄μ λ¨Έλ¦ΏμμΌλ‘
[νμ½ν ] Day8. μ€λ²ν€λ μ€μ΄κΈ° (νλ‘κ·Έλλ¨Έμ€ "κΈ°λ₯κ°μ " νμ΄) λ³Έλ¬Έ
[νμ½ν ] Day8. μ€λ²ν€λ μ€μ΄κΈ° (νλ‘κ·Έλλ¨Έμ€ "κΈ°λ₯κ°μ " νμ΄)
Space_Jin 2025. 9. 21. 16:28νμ½ν 8μΌμ°¨ λ¬Έμ μμ μ€ν/ν λ¬Έμ μ λλ€.
ν΄λΉ λ¬Έμ μμλ νλ₯Ό μ΄μ©ν λ¬Έμ νμ΄λ₯Ό νμμΌλ λ°λμ μλ£κ΅¬μ‘° νλ₯Ό μ΄μ©ν νμμμ΄ μ±λ₯ ν₯μμ μν λ°©μμ κ³ λ €ν΄λ³Ό μ μμ΄μ΅λλ€.
λ¬Έμ μ€λͺ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 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] [1, 3, 2]
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
첫 λ²μ§Έ κΈ°λ₯μ 93% μλ£λμ΄ μκ³ ν루μ 1%μ© μμ μ΄ κ°λ₯νλ―λ‘ 7μΌκ° μμ ν λ°°ν¬κ° κ°λ₯ν©λλ€.
λ λ²μ§Έ κΈ°λ₯μ 30%κ° μλ£λμ΄ μκ³ ν루μ 30%μ© μμ μ΄ κ°λ₯νλ―λ‘ 3μΌκ° μμ ν λ°°ν¬κ° κ°λ₯ν©λλ€. νμ§λ§ μ΄μ 첫 λ²μ§Έ κΈ°λ₯μ΄ μμ§ μμ±λ μνκ° μλκΈ° λλ¬Έμ 첫 λ²μ§Έ κΈ°λ₯μ΄ λ°°ν¬λλ 7μΌμ§Έ λ°°ν¬λ©λλ€.
μΈ λ²μ§Έ κΈ°λ₯μ 55%κ° μλ£λμ΄ μκ³ ν루μ 5%μ© μμ μ΄ κ°λ₯νλ―λ‘ 9μΌκ° μμ ν λ°°ν¬κ° κ°λ₯ν©λλ€.
λ°λΌμ 7μΌμ§Έμ 2κ°μ κΈ°λ₯, 9μΌμ§Έμ 1κ°μ κΈ°λ₯μ΄ λ°°ν¬λ©λλ€.
μ μΆλ ₯ μ #2
λͺ¨λ κΈ°λ₯μ΄ ν루μ 1%μ© μμ μ΄ κ°λ₯νλ―λ‘, μμ μ΄ λλκΈ°κΉμ§ λ¨μ μΌμλ κ°κ° 5μΌ, 10μΌ, 1μΌ, 1μΌ, 20μΌ, 1μΌμ λλ€. μ΄λ€ κΈ°λ₯μ΄ λ¨Όμ μμ±λμλλΌλ μμ μλ λͺ¨λ κΈ°λ₯μ΄ μμ±λμ§ μμΌλ©΄ λ°°ν¬κ° λΆκ°λ₯ν©λλ€.
λ°λΌμ 5μΌμ§Έμ 1κ°μ κΈ°λ₯, 10μΌμ§Έμ 3κ°μ κΈ°λ₯, 20μΌμ§Έμ 2κ°μ κΈ°λ₯μ΄ λ°°ν¬λ©λλ€.
λ¬Έμ νμ΄
ν΄λΉ λ¬Έμ λ μμ μ μμμ λ°λΌμ λ°°ν¬κΉμ§ λ¨μ μμ κΈ°κ°μ΄ μμ μμ κ³Ό μΌμΉνλμ§ κ³μ λΉκ΅νλ λ¬Έμ λ‘ FIFO(First In First Out)μ ν μλ£κ΅¬μ‘°λ₯Ό νΉμ λ°©λ²λ‘ μ μ΄μ©νλ λ¬Έμ μ λλ€.
1. λ°°ν¬κΉμ§ λ¨μ μμ κΈ°κ°μ κ³μ°νμ¬ νμ λ£κΈ°
2. λ°°ν¬ν μμ λ³΄λ€ μμ κΈ°κ°μ΄ μκ±°λ κ°μ μμ μ ν¨κ» λ°°ν¬ -> νμμ ν¨κ» μ κ±°
λ°©μμΌλ‘ μ κ·Ό ν©λλ€.
μμ€ μ½λ
import java.util.Deque;
import java.util.ArrayDeque;
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
/*
λ¬Έμ νμ΄ κ°μ
ν¨κ» λ°°ν¬λ μΈνΈλ₯Ό μμ
μ μμλλ‘ μ²λ¦¬
μμ°¨μ²λ¦¬ -> ν
ν¨κ» λ°°ν¬ -> νμ¬ λ°°ν¬ν μμ
λ³΄λ€ μλ£ μμ κΈ°κ°μ΄ μκ±°λ κ°μ κ²
*/
Deque<Integer> q = new ArrayDeque<>(); //μλ£κΉμ§ λ¨μ μμ
μΌμ λ΄λ ν
List<Integer> list = new ArrayList<>(); //μ λ΅μ λ΄μ 리μ€νΈ
//μμ
λ΄κΈ°
for(int i = 0; i < progresses.length; i++) {
//λ¨μ μμ
κΈ°κ° -> μμ«μ μ νλ£¨κ° λ νμνλ―λ‘ μ¬λ¦Όμ²λ¦¬ νλ€.
int leftD = (int)Math.ceil((100.0 - progresses[i]) / speeds[i]);
q.offer(leftD);
}
//λ°°ν¬μΌ κ³μ°
while(!q.isEmpty()) {
int cnt = 1; //ν¨κ» λ°°ν¬λ μμ
μ
int d = q.poll(); //νμ¬ μμ
μ΄ μλ£λκΈ°κΉμ§ 걸리λ κΈ°κ°
//ν¨κ» λ°°ν¬λ μμ
μΉ΄μ΄νΈ
while(!q.isEmpty() && q.peek() <= d) {
q.poll();
cnt++;
}
list.add(cnt);
}
return list.stream()
.mapToInt(Integer::intValue)
.toArray();
}
}
ν΄λΉ μ½λλ μμ λ¬Έμ νμ΄ λ°©μμ μμ°¨μ μΌλ‘ μ½λλ‘ κ΅¬νν μ½λμ λλ€.
λ¨μ μμ μ κ³μ°νμ¬ νμ λ£κΈ° -> λ°°ν¬μΌμ΄ κ°μ μμ μ νμμ λ°λ³΅μ μΌλ‘ μ κ±°νλ©΄μ μ λ΅ λ¦¬μ€νΈμ μ μ¬
μκ°λ³΅μ‘λ O(logN)
νμ§λ§ μ λ¬Έμ μ κ²½μ°, μμ (porgresses)λ₯Ό μ²μλΆν° λκΉμ§ κ·Έλλ‘ λ΄λ 무방νλ―λ‘ ν μλ£κ΅¬μ‘°μ μ§μ μ¬μ©νμ§ μκ³ νμ΄κ° κ°λ₯ν©λλ€. κ·Έ λ°μλ ArrayListλ₯Ό μ΄μ©ν΄μ μ λ΅μ μ½μ , Streamμ ν΅ν μ λ΅ νμ (int λ°°μ΄)λ‘ λ³ννλ©΄μ μ€λ²ν€λ λ±μ μ€μ΄λ λ°©μμ΄ κ°λ₯ν©λλ€.
κ°μ λ νμ΄
import java.util.Arrays;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
/** κ°μ λ νμ΄ */
int n = progresses.length;
// μμλ‘ μ΅λ nκ°κΉμ§ λ΄μ λ²νΌ
int[] tmp = new int[n];
int k = 0; // μ€μ κ²°κ³Ό κΈΈμ΄
// 첫 μμ
μ μλ£μΌ(μ μ μ¬λ¦Ό)
int curr = (100 - progresses[0] + speeds[0] - 1) / speeds[0];
int cnt = 1;
for (int i = 1; i < n; i++) {
int day = (100 - progresses[i] + speeds[i] - 1) / speeds[i];
if (day <= curr) {
// νμ¬ λ°°ν¬ λ¬Άμμ ν¬ν¨
cnt++;
} else {
// μ§κΈκΉμ§ λ¬Άμ κ°μ νμ
tmp[k++] = cnt;
// μ κΈ°μ€μΌλ‘ κ°±μ
curr = day;
cnt = 1;
}
}
// λ§μ§λ§ λ¬Άμ μΆκ°
tmp[k++] = cnt;
// κ²°κ³Ό ν¬κΈ°μ λ§μΆ° μλΌμ λ°ν
return Arrays.copyOf(tmp, k);
}
}
1. λΆνμν νμ λ΄κΈ° μ κ±°
2. μ¬λ¦Όμ μν νλ³νμ μ κ±°(float, Math λ± μ¬μ© μ κ±°)
3. μ€νΈλ¦Ό μ€λ²ν€λ μ κ±°(Listλ₯Ό Arrayλ‘ λ³ννκΈ° μν¨)
μ ν΅ν΄μ λ©λͺ¨λ¦¬ μ¬μ© κ°μ λ° λμ κ°μνλ‘ μ±λ₯μ κ°μ ν μ μμ΅λλ€.
μ€μ νλ‘κ·Έλλ¨Έμ€μ κ²°κ³Όλ§ λ³΄μμ λ, μκ°μ μΌλ‘ μ½ 100λ°° μ’μ μ±λ₯μ λΌ μ μμ΅λλ€.
λ¨μν λ¬Έμ κ° μꡬνλ μΉ΄ν κ³ λ¦¬μ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν μ μμ§λ§, κΈ°λ³Έν(int λ°°μ΄ λ±)μ μ¬μ©μ΄λ μ μν μ¬λ¦Ό λλμ μ μ΄μ©ν μΊμ€ν μ κ±°, μ€νΈλ¦Όμ ν΅ν μ€λ²ν€λ μ κ±° λ±μ μ κ·Ήμ μΌλ‘ νμ©ν΄λ³΄λ κ²μ΄ μ’μ μ±λ₯μ μ½λλ₯Ό λ§λ€ μ μλ€λκ±Έ 체κ°νκ²λ μ’μ λ¬Έμ μμ΅λλ€.