아래 링크의 강의 중 Section 6. MaxChars
의 내용을 추려 이번 글을 작성하였습니다.
The Coding Interview Bootcamp: Algorithms + Data Structures on Udemy
function maxChar(str) {
const splited = str.split("");
let cnt = "";
const cntArr = [];
for (let i = 0; i < splited.length; ++i) {
cnt = splited.filter((el) => splited[i] === el).length;
cntArr.push(cnt);
}
const maxCnt = [...cntArr].sort()[cntArr.length - 1];
const maxCntIdx = cntArr.findIndex((el) => {
return el === maxCnt;
});
return splited[maxCntIdx];
}
console.log(maxChar("abcccccccd"));
str
를 split
으로 나누어 배열 만들기.cnt
선언.cntArr
선언.for문
통해 str
를 탐색하면서 filter()
method로 등장횟수 세어 cntArr
에 push.sort()
method를 통해 최대값 구하기.findIndex()
method로 cntArr
내 최초로 등장한 최빈값의 idx
구하기.splited
배열에서 cntArr
내 최빈값의 idx
와 일치하는 값 반환.array.filter((element, index, array) => {});
Parameters
element
: 현재 array
내 탐색 중인 값index(Optional)
: 현재 array
내 탐색 중인 element
의 index
array(Optional)
: filter()
를 호출한 배열Return value
조건과 일치하는 값을 배열에 담아 반환. 조건에 맞는 값이 없으면 빈 배열을 반환.
array.findIndex((element, index, array) => {})
Parameters
element
: 현재 array
내 탐색 중인 값index(Optional)
: 현재 array
내 탐색 중인 element
의 index
array(Optional)
: filter()
를 호출한 배열Return value
배열 내에서 주어진 조건을 충족한 첫 번째 값을 반환. 없으면 -1
반환.
function maxChar(str) {
const charMap = {};
let max = 0;
let maxChar = "";
for (let char of str) {
if (charMap[char]) {
charMap[char]++;
} else {
charMap[char] = 1;
}
// charMap[char] = charMap[char] + 1 || 1; 위 if문 대신 쓸 수 있음.
}
for (let char in charMap) {
if (charMap[char] > max) {
max = charMap[char];
maxChar = char;
}
}
return maxChar;
}
console.log(maxChar("abcccccccd"));
charMap
선언.for문
돌면서 최대값을 구할 때 쓰일 max
와 maxChar
선언.for... of
로 문자열 str
탐색하면서 charMap[char]
가 이미 존재한다면 value
에 1
증가, 처음 등장하는 문자라면 value
로 1
설정.for... in
으로 객체 charMap
탐색하면서 max
보다 charMap
의 value
가 클 경우, max
를 charMap[char](value)
로 치환하고 maxChar
를 char(key)
로 치환.maxChar
반환.