Leetcode Java Daily Temperatures
업데이트:
문제
코드
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int length = temperatures.length;
int lastTemperature = 0;
int[] result = new int[length];
for (int idx = length - 1; idx >= 0; idx--) {
int currentTemperature = temperatures[idx];
if (currentTemperature >= lastTemperature) {
lastTemperature = currentTemperature;
continue;
}
int days = 1;
while (temperatures[idx + days] <= currentTemperature) {
days += result[idx + days];
}
result[idx] = days;
}
return result;
}
}
결과
설명
- 일자별 온도 정보를 저장하는 temperatures를 이용하여 현재 온도에서 더 따뜻한 온도가 되는 날까지의 일수 차이를 계산하여 반환하는 문제이다.
- 더 따뜻한 온도의 날자 정보가 없는 경우, 0을 넣어준다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 temperatures의 길이를 저장한 변수이다.
- lastTemperature는 이전 온도 정보를 저장할 변수로, 0으로 초기화한다.
- result는 일수 차이를 계산해서 넣어줄 배열로, temperatures와 동일한 크기인 length 크기의 정수 배열로 초기화한다.
- $length - 1$부터 0까지 idx를 감소시키면서 아래를 수행한다.
- temperatures의 idx번째 온도 정보를 currentTemperature에 임시 저장한다.
- currentTemperature가 lastTemperature보다 크거나 같은 경우, lastTemperature에 currentTemperature를 저장하고 다음 반복을 수행한다.
- 날자 차이를 계산할 days를 1로 초기화하고, temperatures의 현재 위치 이후인 $idx + days$번째 온도 정보부터 currentTemperature 이하인 경우, days에 result의 $idx + days$ 번째 위치 값을 더해준다.
- 위의 반복이 완료되면 result의 idx번째 위치에 계산된 days를 넣어준다.
- 반복이 완료되면 날자 차이 값을 계산한 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기