https://school.programmers.co.kr/learn/courses/30/lessons/42584?language=java 

 

프로그래머스

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

programmers.co.kr

 

쉬운문제입니다.

 

[step 1]. for문으로 각각 prices[0], prices[1], prices[2] ... 를 돌면서 각각 초의 시간대마다 반복문을 돕니다.
[step 2]. 각 시작초부터 끝초까지 반복문을 시작하여 해당 초보다 더 작다면 거기서 중단하고 얼마나 갔는지 체크하면됩니다.

 

기억해야할점

첫번째, 문제를 정확히 이해야합니다.

  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.

이 말을 생각하지 않아서 처음에 틀렸었습니다.

위의 조건을 대입하면, 만약 해당 주식값이 떨어진 지점을 찾았다면, 3초에서 4초로 되면서 떨어진것이므로

1초가 지난것입니다. 그러므로 cnt+=1 을 통해 초를 1초 올려줍니다.

 

 

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        int answeridx = 0;
        for(int i=0;i<prices.length;i++){
            int cnt = 0;
            
            for(int j=i+1;j<prices.length;j++){
                if(prices[i] <= prices[j]){
                    cnt += 1;
                }else{
                    cnt += 1;
                    break;
                }
            }
            answer[answeridx++] = cnt;
        }
        
        return answer;
    }
}

+ Recent posts