본문 바로가기
알고리즘

[프로그래머스] 주식가격

by steadyMan 2022. 2. 1.

스택을 활용한 다른분들의 풀이를 보았으나 스택사용에 대한 학습이 우선인듯 싶어 이중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

댓글