728x90
반응형
1. 이중for문
int len=tem.length;
int[] result=new int[len];
int count =0, j;
for(int i=0;i<len;i++) {
for(j=i+1;j<len-1;j++) {
if(tem[i]<tem[j]) {
count++;
break;
}
else
count++;
}
if(j==tem.length) result[i]=0;
else result[i]=count;
count=0;
}
return result;
2. while문
int len = tem.length;
int[] result = new int[len];
int max=0;
for(int i=0;i<len;i++) {
max=i;
//제일 높았던 날짜를 max로
while(max<=len-1 && tem[i]>=tem[max]) { //max가 주어진 날짜안이고
max++;
//i일 다음으로, 제일 높은 날짜
}
if(max<=len-1) result[i]=max-i; //걸리는 기간
else result[i]=0;
}
return result;
3. stack 이용
int len=tem.length;
int[] result = new int[len];
Stack<Integer> stack = new Stack<>();
for(int i=0;i<len;i++) {
while(!stack.isEmpty() && tem[stack.peek()]<tem[i]) {
int index=stack.pop();
result[index]=i-index;
}
stack.push(i);
}
return result;
728x90
반응형
'Java > Java 알고리즘 인프런' 카테고리의 다른 글
[Ch.09 - Greedy] 01. 씨름 선수 (0) | 2022.07.15 |
---|---|
[리뷰] 해결 못한 알고리즘 다시 풀기 -2 (0) | 2022.07.08 |
String에 char 추가하기 (0) | 2022.06.30 |
[Ch.07 - Recursive] 03. 팩토리얼 (0) | 2022.06.22 |
[Ch.07 - Recursive] 02. 재귀함수를 이용한 이진수 출력 (0) | 2022.06.22 |