11import java .util .*;
22class Solution {
3- public int [] solution (int [] progresses , int [] speeds ) {
4- int size = progresses .length ;
5- int [] remains = new int [size ];
6-
7- for (int i = 0 ; i < size ; i ++){
3+ public int [] solution (int [] progresses , int [] speeds ) {
4+ Queue <Integer > queue = new LinkedList <>();
5+ for (int i = 0 ; i < speeds .length ; i ++){
6+ int progress = progresses [i ];
87 int speed = speeds [i ];
9- int remain = (100 - progresses [i ]);
10- if (remain % speed == 0 ){
11- remains [i ] = remain /speed ;
12- }else {
13- remains [i ] = remain /speed + 1 ;
14- }
158
16- }
17-
18- ArrayList <Integer > result = new ArrayList <>();
19- int prev = -1 ;
20- Map <Integer , Integer > map = new HashMap <>();
21- for (int remain :remains ){
22- if (remain > prev ) {
23- map .put (remain , map .getOrDefault (remain , 0 ) + 1 );
24- if (prev != -1 ) result .add (map .get (prev ));
25- prev = remain ;
9+ int day = 0 ;
10+ while (progress < 100 ){
11+ progress += speed ;
12+ day ++;
2613 }
27- else map .put (prev , map .getOrDefault (prev , 0 ) +1 );
14+ queue .offer (day );
15+ }
16+
17+ List <Integer > answer = new ArrayList <>();
18+ int standard = queue .poll (); // 기준 값
19+ int cnt = 1 ;
20+ while (!queue .isEmpty ()){
21+ if (standard < queue .peek ()) {
22+ standard = queue .poll ();
23+ answer .add (cnt );
24+ cnt = 1 ; // cnt 초기화
25+ } else {
26+ queue .poll ();
27+ cnt ++;
28+ }
2829 }
29- result .add (map .get (prev ));
30-
31- return result .stream ()
32- .mapToInt (Integer ::intValue )
33- .toArray ();
30+ answer .add (cnt );
31+ return answer .stream ().mapToInt (Integer ::intValue ).toArray ();
3432 }
3533}
0 commit comments