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

자바 Level 2 문제, 3. 기능개발 진행 중.

Jungsoomin :) 2020. 4. 21. 23:46

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

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

 

자리를 잡고 앉아 풀었던 문제이다. 2h 정도 사용한 듯 하다.

손공책에 이리저리 적고 노트를 찢어 분리해서 검토해보며 만들었다. 사람의 생각이라는 것이 직접 쓰지 않으면 구체화되기 힘들다고 생각이 문득 들었다. 그만큼 직접 쓰는 것도 어려운 일이라는 것을 알게 되었다. 그러다보니 타이핑하는 것도 신중해졌고, 코드를 짜내리는데에 막혔던 순간들이 찾아왔던 것 같다. 머릿 속으로 앓으며 사고하는 것보다 직접 적고 로직을 적어내려가는 것이 올바른 방향이라는 것을 느낀다.

 

아직 진행중이고 테스트 케이스에서 마지막 순번이 출력이 안되고 있어서 타이핑보다는 공책에 이리저리 로직을 적어보는 시간을 많이 겪었었다.

 

가만히 앉아서 고민도하고 의자에 몸을 살짝 기대고 다시 로직을 적어나가고 그렇게 진행했다.

 

아직 테스트 케이스도 완성하지 못한 상태라 조심스러운 마음이 드는데, 부딪쳐보면 분명히 정답이 나올 것이다.

 

이번 강의를 들으면서도 while 문이 자주 등장하는 것을 보면서 'while문이 생각보다 자주 쓰이는 구나.' 하고 깨닫고 있다.

 

 

 

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
47
48
49
50
51
52
package programmers_기능개발;
 
import java.util.ArrayList;
import java.util.List;
 
public class subClass {
    public int[] solution (int[] progresses, int[] speeds) {
        int[] answer= {};
        //100% 이상이 되야 서비스에 반영가능. 뒤가 먼저 개발되면 앞의 기능이 배포될떄 함께 배포
        //progresses 는 진도 speeds 는 하루 마다 진행 속도
        //return 값은 진행 속도.
        List<Integer> list =new ArrayList<Integer>();
        List<Integer> days = new ArrayList<Integer>();
        List<Integer> count = new ArrayList<Integer>();
        int check =0;
        int dayCount =0;
        Integer max =100;
        
        for(int a : progresses) {list.add(a);}// 프로그램 진행도 넣는 것은 문제가 없음
 
        while(!(list.isEmpty())) {
            for(int i=0; i<list.size();i++) {
                 int plus = list.get(i);
                 Integer plusResult = plus +speeds[i];
                 list.set(i, plusResult);//<인덱스 교체 메서드 필요
                    
            }
             //dayCount ++;
             if(list.get(0)>=max) {
                 list.remove(0); check ++;
                 for(int i=0; i<days.size();i++) {
                     if(days.get(i) != 0) {check++; days.remove(i); }else {count.add(check);}                     
                 }
                 count.add(check); check =0;
             }else {
                 for(int i=1; i<list.size();i++) {
                     if(list.get(i) >= max) {int changer = list.get(i); days.add(changer); list.remove(i);}
                 else {}
             }
        }
        }//<프로 젝트 종료
        
             answer = new int[count.size()];
        for(int i =0; i<count.size();i++) {
            answer[i] = count.get(i);    
            System.out.println(answer[i] + "," + answer.length);//< 다음 체크 값이 안뜨고 있음. 0이 완로됬을떄 완료된 뒤값은 계산이 되는데에 반해서 안되는 상황에서는 계산이 안되고 있음.
        }
        
       return answer;
    }
}
 
cs