Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
29 changes: 29 additions & 0 deletions leetcode2/1easy/최은서/Q859.js
Original file line number Diff line number Diff line change
@@ -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;
}
};
28 changes: 28 additions & 0 deletions leetcode2/3hard/최은서/Q1793.js
Original file line number Diff line number Diff line change
@@ -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;
};