728x90
반응형
References
아래 링크의 강의 중 Section 6. MaxChars
의 내용을 추려 이번 글을 작성하였습니다.
The Coding Interview Bootcamp: Algorithms + Data Structures on Udemy
Solution 1. my solution
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
와 일치하는 값 반환.
filter()
array.filter((element, index, array) => {});
Parameters
element
: 현재array
내 탐색 중인 값index(Optional)
: 현재array
내 탐색 중인element
의index
array(Optional)
:filter()
를 호출한 배열
Return value
조건과 일치하는 값을 배열에 담아 반환. 조건에 맞는 값이 없으면 빈 배열을 반환.
findIndex()
array.findIndex((element, index, array) => {})
Parameters
element
: 현재array
내 탐색 중인 값index(Optional)
: 현재array
내 탐색 중인element
의index
array(Optional)
:filter()
를 호출한 배열
Return value
배열 내에서 주어진 조건을 충족한 첫 번째 값을 반환. 없으면 -1
반환.
Solution 2. with object
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
반환.
728x90
반응형
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
배열 잘라내기(Array Chunking) (0) | 2022.04.04 |
---|---|
fizzBuzz (0) | 2022.04.04 |
정수 뒤집기(Integer Reversal) (0) | 2022.04.04 |
회문(Palindromes) (0) | 2022.04.04 |
문자열 뒤집기(String Reversal) (0) | 2022.04.04 |
댓글