๋ฌธ์
ํ์ด ๊ณผ์
์ฐ์๋ ๋ฌธ์์ด์์ ์ธ์ ํ ๊ฐ ์์ ๋ฌธ์๊ฐ ์๋ก ๋ฌ๋ผ์ผ ํ๋๋ฐ ํ์ํ ๋ณด์ ๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์
๋๋ค.
๋๋ฌธ์ ๊ฐ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ํํ๋ฉฐ ๊ฐ์ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ์ธ์ ํ ๊ทธ๋ฃน๋ค์ ์ฐพ๊ณ , ์ด ๊ทธ๋ฃน ๋ด์์ ๊ฐ์ฅ ๋น์ฉ์ด ํฐ ๋ฌธ์๋ฅผ ์ ์ธํ๊ณ
๋ค๋ฅธ ๋ชจ๋ ๋ฌธ์๋ค์ ์ ํํด์ ์ ๊ฑฐํ๋ฉด ๋ฉ๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ๊ทธ๋ฃน์ ๋จผ์ ๋ง๋ค๊ณ ๋น์ฉ์ ๊ณ์ฐํ๋๋ฐ, ์ฌ์ค ์ด๋ด ํ์์์ด
๊ทธ๋ฅ ๊ฐ ๋ฌธ์๋ฅผ ์ํํ๋ฉฐ ์ธ์ ํ ๋ฌธ์๋ค์ด ์๋ก ๊ฐ์ ๋ ๊ทธ๋๊ทธ๋ ๊ทธ๋ฃน์ ๋ง๋ค์ด์ ๋น์ฉ์ ์ฒดํฌํด์ค๋ ๋ฉ๋๋ค.
์ฝ๋
/**
* @param {string} s
* @param {number[]} cost
* @return {number}
*/
var minCost = function (s, cost) {
const repeatingLetters = [];
let isGroupExist = false;
for (let i = 0, len = s.length; i < len - 1; i += 1) {
if (s[i] == s[i + 1]) {
if (isGroupExist) {
repeatingLetters[repeatingLetters.length - 1].push(cost[i + 1]);
} else {
repeatingLetters.push([cost[i], cost[i + 1]]);
isGroupExist = true;
}
} else {
isGroupExist = false;
}
}
const answer = repeatingLetters.reduce((acc, group) => {
const sum = group.reduce((acc, cost) => acc + cost, 0);
const max = Math.max(...group);
return acc + (sum - max);
}, 0);
return answer;
};
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 199 - Binary Tree Right Side View (Medium) (0) | 2021.04.05 |
---|---|
LeetCode 344 - Reverse String (Easy) (0) | 2021.04.05 |
LeetCode 904 - Fruit Into Baskets (Medium) (0) | 2021.03.08 |
LeetCode 112 - Path Sum (Easy) (0) | 2021.03.04 |
LeetCode 63 - Unique Paths II (Medium) (0) | 2021.03.04 |
๐ฌ ๋๊ธ