
아래 링크의 강의 중 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의 indexarray(Optional): filter()를 호출한 배열Return value
조건과 일치하는 값을 배열에 담아 반환. 조건에 맞는 값이 없으면 빈 배열을 반환.
array.findIndex((element, index, array) => {})
Parameters
element: 현재 array 내 탐색 중인 값index(Optional): 현재 array 내 탐색 중인 element의 indexarray(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 반환.