-
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