🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

CodingTest/Programmers

[프로그래머스/Programmers] 주식가격 (Java - Stack - Lv2)

JONG_UK 2023. 1. 18. 15:06
728x90
반응형
SMALL

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


⭐️ 코드

public int[] solution(int[] prices) {
    int[] answer = new int[prices.length];

    for(int i = 0; i < prices.length; i++) {
        if(i < prices.length-1) {
            answer[i] = notDecreased(i, prices);
        }
        if(i == prices.length-1) {
            answer[prices.length-1] = 0;
        }
    }

    return answer;
}

private int notDecreased(int idx, int[] prices) {
    ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
    stack.addFirst(prices[idx]);
    for(int i = idx+1; i < prices.length; i++) {
        if (stack.peekFirst() > prices[i]) {
            stack.addLast(prices[i]);
            break;
        } else {
            stack.addLast(prices[i]);
        }
    }
    return stack.size()-1;
}

💡 문제 풀이

주식가격 문제는 문제 지문 자체를 이해하는데 시간이 걸린다.

처음에는 뭔 소린지 모르겠었었고 지금도 왜 이렇게 문제가 출제됐는지는 잘 모르겠다..

아래 링크 들어가서 문제 설명을 읽고 풀도록 하자. 이 문제는 설명을 먼저 보는 게 젤 풀기 쉬운 것 같다.

https://school.programmers.co.kr/questions/39058

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

주식 가격이 떨어지면 그다음부터는 올라가든 말든 신경 쓰지 않기 때문에 주식 가격이 떨어지는 순간까지의 num을 구해서 Array로 return 해주면 된다.

private int notDecreased(int idx, int[] prices) {
    ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
    stack.addFirst(prices[idx]);
    for(int i = idx+1; i < prices.length; i++) {
        if (stack.peekFirst() > prices[i]) {
            stack.addLast(prices[i]);
            break;
        } else {
            stack.addLast(prices[i]);
        }
    }
    return stack.size()-1;
}

나는 Stack으로 풀었으며, 내려가는 순간까지의 prices를 Stack에 집어넣고 Stack.size()의 크기에서 -1을 해준 값이 정답이었다.

 

현재 풀이는 시간을 많이 투자 안 하고 풀어서 풀이 과정이 조금 복잡하고 그래서 시간이 좀 걸린다. 

크게 설명할 만한 사항은 없는 것 같으니 끝!

 


👀 후기

어렵진 않다. 하지만 문제 자체의 이해를 잘 못하겠었었다.

이건 내 잘못이 아니라 문제 잘못인 것 같다 ㅎㅎ

 

728x90
반응형
LIST