πλ§ν¬
programmers.co.kr/learn/courses/30/lessons/42586?language=java
μ½λ©ν μ€νΈ μ°μ΅ - κΈ°λ₯κ°λ°
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€. λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ
programmers.co.kr
πλ¬Έμ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€.
λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ κΈ°λ₯λ³΄λ€ λ¨Όμ κ°λ°λ μ μκ³ , μ΄λ λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λ©λλ€.
λ¨Όμ λ°°ν¬λμ΄μΌ νλ μμλλ‘ μμ μ μ§λκ° μ ν μ μ λ°°μ΄ progressesμ κ° μμ μ κ°λ° μλκ° μ ν μ μ λ°°μ΄ speedsκ° μ£Όμ΄μ§ λ κ° λ°°ν¬λ§λ€ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
πμ ν μ¬ν
- μμ μ κ°μ(progresses, speedsλ°°μ΄μ κΈΈμ΄)λ 100κ° μ΄νμ λλ€.
- μμ μ§λλ 100 λ―Έλ§μ μμ°μμ λλ€.
- μμ μλλ 100 μ΄νμ μμ°μμ λλ€.
- λ°°ν¬λ ν루μ ν λ²λ§ ν μ μμΌλ©°, ν루μ λμ μ΄λ£¨μ΄μ§λ€κ³ κ°μ ν©λλ€. μλ₯Ό λ€μ΄ μ§λμ¨μ΄ 95%μΈ μμ μ κ°λ° μλκ° ν루μ 4%λΌλ©΄ λ°°ν¬λ 2μΌ λ€μ μ΄λ£¨μ΄μ§λλ€.
πνμ΄ κ³Όμ
- Queueλ¬Έμ
Queueμ μ±μ§μΈ FIFOλ₯Ό νμ©νμ¬ νμ΄νλ λ¬Έμ
//1
κ° μμ
μ 걸리λ μκ° = ((100 - progresses) % speeds)
- "λλ¨Έμ§κ° μκΈ°λ κ²½μ°" μ "λλ¨Έμ§κ° μκΈ°μ§ μλ κ²½μ°" λκ°μ§ κ²½μ°λ‘ λλμ΄μ€λ€ (μΌν μ°μ°μ μ¬μ©)
- λλ¨Έμ§κ° μκΈΈκ²½μ° : 걸리λ μκ° = λͺ« + 1
-λλ¨Έμ§κ° μκΈ°μ§ μλ κ²½μ°: 걸리λ μκ° = λͺ«
μμ
λ§λ€ κ±Έλ¦° μκ°μ νμ μμ°¨μ μΌλ‘ λ£μ΄μ€λ€
//2
μ΄μ μμ
μ΄ μλ£λλλμ μλ£λ μμ
μ κ°―μλ₯Ό λ£μ΄μ€ ArrayList λ³μ answerList μ μΈ
νμμ pollνμ¬ μ²«λ²μ§Έ μμ
μ κ±Έλ¦°μκ°μ λΉΌμ£Όκ³ μ²«λ²μ§Έ μμ
κ³Ό μ΄ν μμ
λ€μ λΉκ΅νκΈ° μν΄ prevDay λ³μμ 첫λ²μ§Έ μμ
μ κ±Έλ¦°μκ°μ λ£μ΄μ€λ€
μλ£λ μμ
μ μλ = 1
νκ° λΉλκΉμ§ μ€ν
curDays λ³μμ νμμ pollν κ°μ λ£κ³
- prevDay >= curDays μΌκ²½μ° (μ΄μ μμ
κ±Έλ¦°μκ° >= μ΄ν μμ
κ±Έλ¦°μκ°)
μλ£λ μμ
μ μ μ¦κ°
- κ·Έ μΈμ κ²½μ°
answerListμ μ΄μ κΉμ§ μλ£λ μμ
μ μ λ£μ΄μ€ , prevDay = curDaysλ‘ λ°κΎΈκ³ μλ£λ μμ
μ μλ₯Ό νκ°λ‘ λ°κΏμ€λ€
whileλ¬Έμ΄ λλλ©΄ answerListμ μλ£λ μμ μ μλ₯Ό λ£μ΄μ€
//3
μ΄ν μ λ΅ μΆλ ₯μ μν΄ answerListμ κ°μ νλμ© answer λ°°μ΄μ λ£μ΄μ€λ€.
π»μ½λ
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> q = new LinkedList<>();
//1
for(int i= 0; i<progresses.length; i++)
{
//λ¨μ μμ
μΌμκ° μ§νμλλ‘ λλμ΄ λ¨μ΄μ§λ©΄ λͺ«μ λλμ΄λ¨μ΄μ§μ§ μμΌλ©΄ +1
q.add(
(100-progresses[i])%speeds[i] == 0?
(100-progresses[i])/speeds[i] :
(100-progresses[i])/speeds[i] +1
);
}
//2
ArrayList<Integer> answerList = new ArrayList<>();
int prevDay = q.poll();
int numOfDone = 1;
while(!q.isEmpty())
{
int curDays = q.poll();
if(prevDay >= curDays)
{
numOfDone++;
}else{
answerList.add(numOfDone);
numOfDone = 1;
prevDay = curDays;
}
}
answerList.add(numOfDone);
//3
int[] answer = new int[answerList.size()];
for(int i= 0; i<answerList.size(); i++)
{
answer[i]=answerList.get(i);
}
return answer;
}
}
'Coding Test > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] μ λ ¬ Lv.2 / κ°μ₯ ν° μ (0) | 2021.05.25 |
---|---|
[JAVA] ν΄μ Lv.2 / μ νλ²νΈ λͺ©λ‘ (0) | 2021.05.04 |
[JAVA] μμ νμ Lv.1 / λͺ¨μκ³ μ¬ (0) | 2021.05.02 |
[JAVA] Heap Lv.1 / λ λ§΅κ² (0) | 2021.04.26 |
[JAVA] μ λ ¬ Lv.1 / Kλ²μ§Έ μ (0) | 2021.04.26 |