๋ฌธ์
ํ์ด ๊ณผ์
๊ฐ ๋ ์ ์จ๋ ์ ๋ณด๊ฐ ๋ฐฐ์ด๋ก ์ฃผ์ด์ง ๋ ๊ฐ ๋ ์ ์จ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ธฐ์จ์ด ์์นํ๋ ์ต์ด์ ๋ ์ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค. ๋ธ๋ฃจํธ ํฌ์ค
๋ฅผ ์ฌ์ฉํด์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ง ๊ฒฝ์ฐ 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 |
๐ฌ ๋๊ธ