function mostFrequentCharacter(str) {
let obj = { count: 0, mostFrequent: '' };
let arr = {}
let bbc = str.replace(/ /g,'');
// 문자열의 띄어쓰기 공백을 없애기 위해서 replace함수를 사용했다.
for(let i = 0; i < bbc.length; i++){
if(arr[bbc[i]] === undefined){
arr[bbc[i]] = 0
}
arr[bbc[i]]++
// arr객체의 키 값들이 반복문을 돌면서 키값이 있을때 1씩 증가한다.
if(arr[bbc[i]] > obj['count']){
// arr[bbc[i]] 가 obj['count']보다 클때
// arr = { key : value} > obj { count : value }
obj['count'] = arr[bbc[i]]
// obj의 count의 value는 arr[bbc[i]] 된다.
obj['mostFrequent'] = bbc[i]
// obj의 mostFrequent value는 bbc[i]번째 문자열이 된다.
}
}
return obj['mostFrequent']
}
console.log(mostFrequentCharacter('cccyui'))
너무 어려웠던 21번째 문제였다...
위에서 가장 이해가 가지 않았던 부분은 if문부터 였는데 console.log를 하나씩 찍어가면서 겨우 이해를 했다.
순서대로 풀어나가자면
1. 처음 c : 1 > count : 0 로 비교 했을때 조건이 맞게된다.
2. obj['count'] = arr[bbc[i]] 이기 때문에 count : 1 이 된다.
3. 그리고 obj['mostFrequent'] = bbc[i]로 mostFrequent : 'c' 가 되고
4. 반복문이 돌면서 c: 2 , c: 3 이 되고 다시 3보다 크지않은 값들은 비교하지 않고 가장 많이 들어가있던 c를 리턴하게 된다.
1. 빈객체에 key와 value를 넣는 방법
ex) arr[bbc[i]] = value 👉 arr = { bbc : value }
2. 객체 key값과 value를 더하는 방법
ex) arr[bbc[i]]++ 반복문을 돌면서 증가하게 된다.
3. 다른 객체의 key값과 value를 넣는 방법
ex) obj['count'] = arr[bbc[i]]
ex) obj['mostFrequent'] = bbc[i]
4. 비교를 할때 비교해서 큰값을 변수로 할당해주거나 객체 혹은 배열에 담고
다시 비교를 통해서 가장 크거나 작은 값을 도출해 내는것.