κΈ°λ₯κ°λ° (with.Java)
βκΈ°λ₯κ°λ° (with.Java)β λ¬Έμ μ λνμ¬ μμλ³Έ κΈμ λλ€.
μ½λ© ν μ€νΈ λ¬Έμ λ₯Ό νλ©°, νμλ λ¬Έμ μ λν νκ³ μ λ€λ₯Έ νμ΄ λ°©λ²μ μμ보며, μμκ°κ³ μ ν©λλ€.
λ¬Έμ μ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€.
λ¬Έμ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€.
κ° κΈ°λ₯μ μ§λκ° 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] |
λ¬Έμ μ λν λμ νμ΄
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> que = new LinkedList<>();
for(int i = 0; i < progresses.length; i++){
int temp = 100 - progresses[i];
if(temp % speeds[i] == 0){
que.add(temp / speeds[i]);
}else{
que.add(temp / speeds[i] + 1);
}
}
int compare = que.poll();
int count = 1;
ArrayList<Integer> list = new ArrayList<>();
while(!que.isEmpty()){
if(compare >= que.peek()){
count++;
que.remove();
}else{
list.add(count);
count = 1;
compare = que.poll();
}
}
list.add(count);
int[] answer = new int[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
νμ΄ λ¦¬λ·°
solution λ©μλλ λ κ°μ λ°°μ΄ progressesμ speedsλ₯Ό μ λ ₯μΌλ‘ λ°μ΅λλ€.
μμ μ μ§ν μν©κ³Ό μλλ₯Ό μ΄μ©νμ¬ κ° μμ μ΄ μλ£λλ λ° νμν μΌ μλ₯Ό κ³μ°ν©λλ€.
Queue
첫 λ²μ§Έ for 루νλ₯Ό ν΅ν΄ κ° μμ μ λν΄ νμν μΌ μλ₯Ό κ³μ°νκ³ , μ΄λ₯Ό queμ μ μ₯ν©λλ€. λ§μ½ μλμ λ°λΌ μμ μλ£κΉμ§ 걸리λ μΌ μκ° μμμ μΌλ‘ λλμ΄ λ¨μ΄μ§μ§ μμΌλ©΄ μ¬λ¦Όνμ¬ κ³μ°ν©λλ€.
compare λ³μμ 첫 λ²μ§Έ μμ μ νμν μΌ μλ₯Ό μ μ₯νκ³ , count λ³μλ₯Ό μ΄κΈ°νν©λλ€.
λ λ²μ§Έ while 루νλ₯Ό ν΅ν΄ queκ° λΉ λκΉμ§ λ°λ³΅νλ©° κ° μμ μ μλ£κΉμ§ 걸리λ μΌ μλ₯Ό λΉκ΅νμ¬ μ²λ¦¬ν©λλ€.
compareμ νμ¬ μμ μ νμν μΌ μλ₯Ό λΉκ΅νμ¬ μκ±°λ κ°μΌλ©΄ μμ μ μλ£νμΌλ―λ‘ countλ₯Ό μ¦κ°μν€κ³ queμμ μμ μ μ κ±°ν©λλ€.
κ·Έλ μ§ μμΌλ©΄ μλ‘μ΄ μμ μ΄ μμλμμΌλ―λ‘ listμ νμ¬κΉμ§ μλ£λ μμ μ μλ₯Ό μΆκ°νκ³ countλ₯Ό μ΄κΈ°νν©λλ€. λν compareλ₯Ό μ λ°μ΄νΈν©λλ€.
λ§μ§λ§μΌλ‘ listμ μ μ₯λ κ°μ λ°°μ΄λ‘ λ³ννμ¬ λ°νν©λλ€.
μ΄ μ½λλ κ° μμ μ΄ μλ£λλ λ° νμν μΌ μλ₯Ό κ³μ°νκ³ , κ° λ μ§λ³λ‘ μλ£λλ κΈ°λ₯μ μλ₯Ό κ³μ°νμ¬ λ°ννλ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
λ°°μ΄λ‘λ νμ΄λ³΄κ² μ΅λλ€.
λ¬Έμ μ λν λμ νμ΄
import java.util.ArrayList;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> list = new ArrayList<>();
int day = 0;
int count = 1;
int idx = 0;
for(int i = 0; i < progresses.length; i++){
if(day * speeds[i] + progresses[i] >= 100){
count++;
}else if(i != 0){
list.add(count);
count = 1;
}
int temp = 100 - progresses[i];
if(temp % speeds[i] == 0){
int temp2 = temp / speeds[i];
if(day < temp2){
day = temp2;
}
}else{
int temp2 = temp / speeds[i] + 1;
if(day < temp2){
day = temp2;
}
}
}
if(day * speeds[progresses.length - 1] + progresses[progresses.length - 1] >= 100){
list.add(count);
}
int[] answer = new int[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
νμ΄ λ¦¬λ·°
solution λ©μλλ λ κ°μ λ°°μ΄ progressesμ speedsλ₯Ό μ λ ₯μΌλ‘ λ°μ΅λλ€.
μμ μ μ§ν μν©κ³Ό μλλ₯Ό μ΄μ©νμ¬ κ° μμ μ΄ μλ£λλ λ° νμν μΌ μλ₯Ό κ³μ°νκ³ , μ΄λ₯Ό κΈ°μ€μΌλ‘ κ° λ μ§λ³λ‘ μλ£λλ κΈ°λ₯μ μλ₯Ό κ³μ°ν©λλ€.
λ¨Όμ ArrayList
day, count, idx λ³μλ₯Ό μ΄κΈ°νν©λλ€. dayλ μ΄μ κΉμ§μ μ΅λ μλ£ μΌ μλ₯Ό μ μ₯νλ λ³μμ΄κ³ , countλ νμ¬κΉμ§ μ§νλ κΈ°λ₯μ μλ₯Ό λνλ΄λ λ³μμ λλ€.
for 루νλ₯Ό ν΅ν΄ κ° μμ μ λν΄ μ²λ¦¬λ₯Ό μμν©λλ€.
κ° μμ μ΄ μλ£λλ λ° νμν μΌ μλ₯Ό κ³μ°νκ³ , μ΄λ₯Ό ν΅ν΄ count λ³μλ₯Ό μ λ°μ΄νΈν©λλ€.
λ§μ½ μ΄μ μμ μ΄ μλ£λμμΌλ©΄ (day * speeds[i] + progresses[i] >= 100), countλ₯Ό μ¦κ°μν΅λλ€.
κ·Έλ μ§ μμΌλ©΄ (i != 0), countλ₯Ό 리μ€νΈμ μΆκ°νκ³ countλ₯Ό 1λ‘ μ΄κΈ°νν©λλ€.
κ° μμ μ μλ£κΉμ§ 걸리λ μΌ μλ₯Ό κ³μ°νκ³ , μ΄λ₯Ό ν΅ν΄ dayλ₯Ό μ λ°μ΄νΈν©λλ€.
μλμ λ°λ₯Έ μμ μλ£κΉμ§ 걸리λ μΌ μλ₯Ό κ³μ°νκ³ , μ΄μ κΉμ§μ μ΅λ μΌ μλ³΄λ€ ν° κ²½μ°μλ§ dayλ₯Ό μ λ°μ΄νΈν©λλ€.
λ§μ§λ§μΌλ‘ λ§μ§λ§ μμ μ λν μ²λ¦¬λ₯Ό μ§νν©λλ€. λͺ¨λ μμ μ λν΄ λ°λ³΅λ¬Έμ΄ λλ ν λ§μ§λ§ μμ μ΄ μλ£λμμΌλ©΄ countλ₯Ό 리μ€νΈμ μΆκ°ν©λλ€.
listμ μ μ₯λ κ°μ λ°°μ΄λ‘ λ³ννμ¬ λ°νν©λλ€.