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는 정해져있으니 생성 후 값을 넣어주는 형태로 진행하였다.
효율성 까지 확인 후 작업 완료