๋ฌธ์
ํ์ด ๊ณผ์
๊ฐ ๋ ์ ์จ๋ ์ ๋ณด๊ฐ ๋ฐฐ์ด๋ก ์ฃผ์ด์ง ๋ ๊ฐ ๋ ์ ์จ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ธฐ์จ์ด ์์นํ๋ ์ต์ด์ ๋ ์ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค. ๋ธ๋ฃจํธ ํฌ์ค ๋ฅผ ์ฌ์ฉํด์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ง ๊ฒฝ์ฐ O(N^2) ์ ์๊ฐ ๋ณต์ก๋๋ก ์๋ํด๋ณผ ์ ์๊ฒ ์ง๋ง
์
๋ ฅ ๊ฐ์ ํฌ๊ธฐ ๋๋ฌธ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋์ ์ ์คํ ์ ์ฌ์ฉํ๋ฉด O(N) ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์คํ ์ ๊ฐ ๋ ์ง์ ์จ๋๋ฅผ ์ธ๋ฑ์ค์ ํจ๊ป ์ ์ฅํ๋ฉฐ ๋ง์ฝ ์๋ก ๋ค์ด์ค๋ ๋ ์ง์ ์จ๋๊ฐ top ๋ณด๋ค ๋์ ๊ฒฝ์ฐ์๋
ํด๋น ๋ ์ง๋ณด๋ค ์จ๋๊ฐ ๋์ ๋ ์ด ๋จ์๋๊น์ง pop ํด์ฃผ๋ฉฐ ๋ ์ง ๊ฐ๊ฒฉ์ ๊ณ์ฐํฉ๋๋ค.
๋ง์ฝ ์ต์ข
์ ์ผ๋ก ์คํ ์ด ๋น์ด์์ง ์๋ค๋ฉด ๋จ์์๋ ์จ๋๋ ๋ชจ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ด ์๋ ๊ฒ์ด๋ฏ๋ก 0 ์ผ๋ก ํด์ฃผ๋ฉด ๋๋ ๊ฒ์
๋๋ค.
์ฝ๋
/**
* @param {number[]} T
* @return {number[]}
*/
var dailyTemperatures = function (T) {
const stack = [];
const answer = [];
for (let i = 0; i < T.length; i++) {
if (!stack.length || top(stack) >= T[i]) {
stack.push([T[i], i]);
} else {
while (stack.length > 0 && top(stack)[0] < T[i]) {
answer[top(stack)[1]] = i - top(stack)[1];
stack.pop();
}
stack.push([T[i], i]);
}
}
if (stack.length) {
stack.forEach((s) => (answer[s[1]] = 0));
}
return answer;
};
function top(stack) {
return stack[stack.length - 1];
}'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| LeetCode 394 - Decode String (Medium) (0) | 2021.03.03 |
|---|---|
| LeetCode 78 - Subsets (Medium) (0) | 2021.03.03 |
| LeetCode 114 - Flatten Binary Tree to Linked List (Medium) (0) | 2021.03.03 |
| LeetCode 287 - Find the Duplicate Number (Medium) (0) | 2021.03.03 |
| LeetCode 347 - Top K Frequent Elements (Medium) (0) | 2021.03.03 |
๐ฌ ๋๊ธ