본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[Programmers/JAVA] 주식가격 / 프로그래머스 코딩 테스트 연습

by M개발자 2022. 1. 4.
반응형

주식가격

 


문제 설명

 

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.


예시

 

prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

코드 해석 및 전체 코드

 

예시 입출력 설명

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

 

1. 반환할 배열을 prices의 길이만큼 선언

 

2. 이중 for문을 반복하는데, 바깥쪽 for문은 prices의 길이만큼

 

3. 안쪽 for문은 i + 1 ~ prices의 길이만큼 반복

현재 초부터 다음 초의 값들을 비교하기에 i + 1부터 비교하게 된다. 

 

4. answer[i]에 1 증가

예시 입출력 설명에서 3초 때, 1초간 가격이 떨어지지 않은 것으로 본다고 해

조건 비교하지 않고 바로 answer[i]에 1 증가시킨다.

 

5. prices[i]의 다음 요소들 중에서 작은 값을 만나면 안쪽 for문을 종료시킴

 

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

github

programmers

 

반응형

댓글