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