diff --git "a/leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q.2614.js" "b/leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q2614.js" similarity index 100% rename from "leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q.2614.js" rename to "leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q2614.js" diff --git "a/leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q859.js" "b/leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q859.js" new file mode 100644 index 00000000..de5699b7 --- /dev/null +++ "b/leetcode2/1easy/\354\265\234\354\235\200\354\204\234/Q859.js" @@ -0,0 +1,29 @@ +/** + * @param {string} s + * @param {string} goal + * @return {boolean} + */ +//한 번 바꿔서 s === goal 같게 만들 수 있는지 +var buddyStrings = function (s, goal) { + if (s.length !== goal.length) return false; + if (s === goal) { + //글자가 같은 경우 (ex2 - ex3 구분) + const dict = {}; + for (let i = 0; i < s.length; i++) { + if (!dict[s[i]]) dict[s[i]] = 0; + dict[s[i]] += 1; + if (dict[s[i]] >= 2) return true; //ex3 : 같은 글자가 2개 이상 있는 경우 -> swap 가능하므로 true + } + return false; //ex2 : 같은 글자가 2개 이상 존재하지 않는 경우 -> swap 불가 -> false + } else { + //글자가 다른 경우 : 서로 다른 글자를 체크 + const idx = []; + for (let i = 0; i < s.length; i++) { + if (s[i] !== goal[i]) idx.push(i); + } + if (idx.length > 2) return false; //다른 글자가 2개를 넘는 경우 한 번의 swap 으로 불가 + //swap 체크 + if (s[idx[0]] === goal[idx[1]] && s[idx[1]] === goal[idx[0]]) return true; + else return false; + } +}; diff --git "a/leetcode2/3hard/\354\265\234\354\235\200\354\204\234/Q1793.js" "b/leetcode2/3hard/\354\265\234\354\235\200\354\204\234/Q1793.js" new file mode 100644 index 00000000..557b31b0 --- /dev/null +++ "b/leetcode2/3hard/\354\265\234\354\235\200\354\204\234/Q1793.js" @@ -0,0 +1,28 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number} + */ +var maximumScore = function (nums, k) { + let i = k, + j = k; + let res = nums[k]; + let mini = nums[k]; + while (i >= 0 && j < nums.length) { + let left = 0; + let right = 0; + if (j + 1 < nums.length) left = nums[j + 1]; + if (i - 1 >= 0) right = nums[i - 1]; + //이동 + if (right === 0 && left === 0) break; + if (left > right) { + j++; + mini = Math.min(mini, left); + } else { + i--; + mini = Math.min(mini, right); + } + res = Math.max(res, mini * (j - i + 1)); + } + return res; +};