자바 초급문제로 맨땅에 해딩하기

자바 Level 2 문제, 3-2. 기능개발 진행 3일차

Jungsoomin :) 2020. 4. 23. 23:10

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42586)

자바 Level 2 문제의 기능개발 이다.

 

어느 덧 3일차에 다다랐다. 금일도 타이핑을 하고 또 다시 적으며 테스트 케이스를 넘기기위해 분투해보긴 했는데, 테스트 케이스는 넘겼지만 제출과정에서 "이건 아닌데." 하고 감이 왔다. 물론 아니였고, 그 후에 다시 경우의 수를 종합시켜보면서 어디서 문제가 생기는 지 파악해본 상황이다. 개인적으로 Stack으로 다시 적어보니 코드가 좋을 것 같아서 내일 한 번 적용해보려는 생각이다. speed도 같이 삭제되야 한다는 생각은 맞아떨어져서 개인적으로 다행이고 감사하다고 생각하고 있다. 시간 가는 줄 모르겠는데, 맞다. 시간가는 줄 모를만큼 빠져들게 되는 것 같은 문제이다.

 

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package programmers_기능개발;
 
import java.util.ArrayList;
import java.util.List;
 
public class s {
    public int[] solution(int[] progresses, int[] speeds ) {
        int[] answer = {};
        List<Integer> list = new ArrayList<Integer>();
        List<Integer> speed = new ArrayList<Integer>();
        List<Integer> answerList = new ArrayList<Integer>();
        
        for(int i=0; i<speeds.length;i++) {
            list.add(progresses[i]);
            speed.add(speeds[i]);
        }
        while(!(list.isEmpty()&&speed.isEmpty())) {
            for(int i=0; i<list.size();i++) {
                Integer plus =(list.get(i).intValue()+speed.get(i).intValue());
                if(plus>= 100) {plus =100; list.set(i, plus);}
                list.set(i, plus);
            }
            int check =0;//<<여기서 초기화를 시켜줘야할지가 관심사
            if(list.get(0).intValue() ==100) {check++;list.remove(0); speed.remove(0);
                for(int i=0;i<list.size();i++) {
                    if(list.get(i).intValue()>= 100) {check++; list.remove(i);speed.remove(i);}
                    if(list.get(i).intValue()<100) {break;}//<<<
                }
                //System.out.println(list.size()+","+speed.size()+","+check);
                answerList.add(check);check =0;
            }else { check =0;}
 
        }
        answer = new int[answerList.size()];
        //System.out.println(answerList.size());
        
        for(int i=0; i<answerList.size();i++) {
            answer[i] = answerList.get(i).intValue();
        }
        
        // 1,2의 경우와 동시에 다끝나는 경우를 보완해야함
        
        return answer;
    }
}
 
cs