스택을 활용한 다른분들의 풀이를 보았으나 스택사용에 대한 학습이 우선인듯 싶어 이중for을 활용하여 풀었습니다.
시간복잡도 n제곱이기 때문에 데이터양이 많다면 효율성에서 걸릴걸로 생각됩니다.
public int[] solution(int[] prices) {
List<Integer> list2 = new ArrayList<Integer>();
for (int i = 0; i < prices.length; i++) {
int count=0;
int target = prices[i];
for (int j = i + 1; j < prices.length; j++) {
count++;
if(target > prices[j]) {
break;
}
}
list2.add(count);
}
int[] answer = new int[prices.length];
for (int i = 0; i < list2.size(); i++) {
answer[i] = list2.get(i);
}
return answer;
}
좋은 풀이법은 아니지만 생각난대로 풀이한 결과입니다.
다른분들의 풀이중 깔끔하다고 생각되는 풀이법을 보면
class Solution {
public int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
int i, j;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
answer[i]++;
if (prices[i] > prices[j])
break;
}
}
return answer;
}
}
int배열의 기본값이 0인걸 활용하여 값을 올릴때 배열로 직접접근하여 ++연산 실행
'알고리즘' 카테고리의 다른 글
[알고리즘] 다양한 정렬 알고리즘 (0) | 2022.04.28 |
---|---|
[알고리즘] 숫자를 뒤집기 (0) | 2022.04.06 |
[프로그래머스] 모의고사 (0) | 2022.03.04 |
[프로그래머스] 프린트 (0) | 2022.01.23 |
[프로그래머스] 기능개발 (0) | 2022.01.21 |
댓글