ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Programmers LV.2 주식가격
    Programmers 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는 정해져있으니 생성 후 값을 넣어주는 형태로 진행하였다.

     

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

    'Programmers' 카테고리의 다른 글

    Programmers LV.2 프린터  (0) 2020.12.27
    Programmers LV.2 다리를 지나가는 트럭  (0) 2020.12.23
    Programmers LV.3 베스트앨범  (0) 2020.12.19
    Programmers LV.2 위장  (0) 2020.12.17
    Programmers LV.2 전화번호 목록  (0) 2020.12.16

    댓글

Designed by black7375.