문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for (int i = 0; i < prices.length - 1; i++) {
for (int j = i + 1; j < prices.length; j++) {
answer[i]++;
if (prices[i] > prices[j]) {
break;
}
} if (prices[i] > prices[i + 1]) {
answer[i] = 1;
}
}
return answer;
}
}
answer 배열의 크기는 prices와 동일하므로 prices의 길이로 지정합니다.
바깥 for문이 prices의 길이 - 1만큼 순회합니다.
안쪽 for문이 i + 1부터 prices의 길이만큼 순회합니다.
answer의 i 번째 원소가 증가합니다.
첫 번째 if문에서 prices의 i 번째 원소가 prices의 j 번째 원소보다 크다면 가격이 떨어졌다는 뜻이므로 break를 이용하여 안쪽 for문을 종료합니다.
두 번째 if문에서 prices의 i 번째 원소가 prices의 i + 1 번째 원소보다 크다면 마찬가지로 가격이 떨어졌다는 뜻입니다. 앞선 if문에서는 이 경우 값이 증가한 적이 없기 때문에 0으로 끝납니다. 그러나 가격이 떨어진 것은 1초 뒤로 표기되어야 하므로 answer의 i 번째 원소에 1을 할당하여 올바른 값을 반환할 수 있도록 합니다.
'프로그래머스 > Lv. 2' 카테고리의 다른 글
[프로그래머스 코딩테스트] 다리를 지나는 트럭(Java) (1) | 2023.08.01 |
---|---|
[프로그래머스 코딩테스트] 뒤에 있는 큰 수 찾기(Java) (0) | 2023.07.31 |
[프로그래머스 코딩테스트] 영어 끝말잇기(Java) (0) | 2023.07.25 |
[프로그래머스 코딩테스트] 더 맵게(Java) (0) | 2023.07.20 |
[프로그래머스 코딩테스트] 기능개발(Java) (0) | 2023.07.15 |