- νΉμ λ μ§ κ΅¬κ°μ μΌλ³ μ¨λκ° μ£Όμ΄μ‘μ λ κ° λ μ§ μ΄ μ¨λλ‘ λΆν° μ²μμΌλ‘ λ λμ μ¨λκ° λ±μ₯νλ λ κΉμ§ λͺμΌμ΄ 걸리λμ§ κ΅¬νλ λ¬Έμ μ΄λ€.
- μλ₯Ό λ€μ΄
[25, 23, 27, 21]
μ κ²½μ° 25 β 27
κΉμ§ 2μΌ, 23 β 27
κΉμ§ 1μΌ, 27
μ κ²½μ° μ΄ν λ μ¨λκ° λμ λ μ΄ μκ³ , 21
μ λ§μ§λ§ λ μ΄λ―λ‘ κ²°κ³Όλ [2, 1, 0, 0]
μ΄ λλ€.
- λ무 μ΄λ ΅κ² μκ°ν΄μ λͺ» νμλλ° ννΈλ₯Ό 보λκΉ κ°μκΈ° μκ°μ΄ λ¬λ€.
- λ°°μ΄μ μ λ°©ν₯μΌλ‘ μνν΄μ νλ €κ³ νλ μ΄λ €μ λ κ² κ°λ€.
- μ΄ λ¬Έμ λ νΉμ μΌμλ₯Ό κΈ°μ€μΌλ‘ ν΄λΉ μΌμ μ΄νμ μμ λ³΄λ€ μ¨λκ° λμ λ μ€ κ°μ₯ κ°κΉμ΄ λ μ μ°ΎμΌλ©΄ λλ λ¬Έμ μ΄λ€.
- μ¨λμ λ²μκ° 30 ~ 100μ΄λ―λ‘ λ°°μ΄μ λ§λ€μ΄μ κ° μ¨λκ° λ±μ₯ν λ μ λ°°μ΄
indices
μ κΈ°λ‘ν μ μλ€. - νΉμ μΌ μ΄νμ κ° μ¨λλ³λ‘ κ°μ₯ κ·Όμ ν λ μ κΈ°λ‘ν΄μΌ νλ―λ‘ μ¨λ
temperature
λ°°μ΄μ μμμΌλ‘ μννλ©° κΈ°λ‘νλ©΄ λλ€. - κ° μ¨λκ° λ±μ₯ν λ μ κΈ°λ‘ν λ°°μ΄
indices
μ μννλ©΄μ νμ¬ μ¨λ λ³΄λ€ λμ μ¨λ μ€ κ°μ₯ κ·Όμ ν λ μ μ°Ύλλ€.
class Solution {
final int MIN_TEMP = 30;
final int MAX_TEMP = 100;
public int[] dailyTemperatures(int[] temperatures) {
int n = temperatures.length;
int[] result = new int[n];
int[] indices = new int[MAX_TEMP - MIN_TEMP + 1];
for (int i = n - 1; i >= 0; --i) {
int t = temperatures[i];
indices[t - MIN_TEMP] = i;
int nextIndex = Integer.MAX_VALUE;
for (int j = t + 1; j <= MAX_TEMP; ++j) {
if (indices[j - MIN_TEMP] == 0) continue;
nextIndex = Math.min(nextIndex, indices[j - MIN_TEMP]);
}
if (nextIndex != Integer.MAX_VALUE) {
result[i] = nextIndex - i;
}
}
return result;
}
}