Programmers

Programmers LV.2 주식가격

Developer Garam.Choi 2020. 12. 20. 19:09

 

 

해당 문제를 풀기전에 지문이 잘 이해가 되지 않았다.

 

결국 이해하기로는 

 

prices[0] -> prices[prices.length] 만큼 비교해서 값이 떨어지냐 안떨어지냐를 반복하라는 문구로 이해했다.

 

  @org.junit.Test
    public void jusick(){

        int[] prices = {1, 2, 3, 2, 3};
        ArrayList<Integer> answerArray = new ArrayList<Integer>();

        for(int a=0; a < prices.length; a++){
            int cnt = 0;
            if(a == prices.length-1){
                answerArray.add(0);
            }
            for(int b=(a+1); b< prices.length; b++){
                if(prices[a] <= prices[b]){
                    cnt++;
                    if(b == prices.length-1) {
                        answerArray.add(cnt);
                        break;
                    }
                }else{
                    cnt++;
                    answerArray.add(cnt);
                    break;
                }
            }
        }
        int[] answer = new int[answerArray.size()];
        for(int c=0; c<answerArray.size(); c++){
            answer[c] = answerArray.get(c);
            System.out.println(answer[c]);
        }
    }

 

처음으로 작성한 내역은 위와 같다.

 

기본적으로 값을 뽑기위해서 위와 같이 진행하였고, 요구사항은 테스트와 일치하는 것을 확인하였다,

 

하지만 효율성에서 문제가 있어 이를 변경하기로 진행함.

 

 @org.junit.Test
    public void jusick(){

        int[] prices = {1, 2, 3, 2, 3};
        int[] answer = new int[prices.length];

        for(int a=0; a < prices.length; a++){
            int cnt = 0;
            if(a == prices.length-1){
                answer[a] = 0;
            }
            for(int b=(a+1); b< prices.length; b++){
                if(prices[a] <= prices[b]){
                    cnt++;
                    if(b == prices.length-1) {
                        answer[a] =cnt;
                        break;
                    }
                }else{
                    cnt++;
                    answer[a] =cnt;
                    break;
                }
            }
        }

        for(int c=0; c<answer.length; c++){
            System.out.println(answer[c]);
        }
    }

 

변경하여 arrayList를 제외하고, 최종 출력될 int[] length는 정해져있으니 생성 후 값을 넣어주는 형태로 진행하였다.

 

효율성 까지 확인 후 작업 완료