Skip to content
Open
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
1 change: 0 additions & 1 deletion best-time-to-buy-and-sell-stock/robinyoon-dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ var maxProfit = function (prices) {
return maxProfit;
};


// -----아래는 이전에 작성한 답안입니다.
// /**
// * @param {number[]} prices
Expand Down
45 changes: 45 additions & 0 deletions group-anagrams/robinyoon-dev.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* @param {string[]} strs
* @return {string[][]}
*/

// 문제는 풀었으나 시간 복잡도 측면에서 효율이 너무 떨어지는 풀이 방법....
var groupAnagrams = function (strs) {
let outputArr = [];
let countArr = [];

const A_ASCII = 'a'.charCodeAt(0);
const Z_ASCII = 'z'.charCodeAt(0);

let charCounts = Z_ASCII - A_ASCII + 1;
let charCountArr = new Array(charCounts).fill(0); //인덱스가 알파벳을 나타냄.

for (str of strs) {
let strCountString = getStrCountString(str);

let hasSameCountIndex = countArr.findIndex((item) => item === strCountString);

if (hasSameCountIndex !== -1) {
outputArr[hasSameCountIndex].push(str);
} else {
countArr.push(strCountString);

outputArr.push([str]);
}
}

return outputArr;

function getStrCountString(str) {
let tempArr = [...charCountArr];

for (char of str) {
let charAscii = char.charCodeAt(0);
let charIndex = charAscii - A_ASCII;
tempArr[charIndex] += 1;
}
return tempArr.join(',');
}
};


Loading