Q. 주어진 string에서 가장 많이 쓰인 char를 찾아서 출력하라.
--- Examples
maxChar("abcccccccd") === "c"
maxChar("apple 1231111") === "1"
Code
😢 Object를 만드는 방법에 익숙하지 않았는데, 이번 기회를 통해 익숙해질 수 있었다.
마찬가지로, for ... of와 for ... in을 사용하는 것도 익숙해질 수 있었다.
😊 Map(Object)을 만들어서 각 문자(key)의 빈도수(value)를 저장하고, 최대값(max)을 구하여, 가장 많이 쓰인 문자(maxChar)를 출력하는 방식으로 해결하면 된다.
✔ object map
object는 key와 value를 가지고 있다. arr[1] = 'a'; 처럼 배열에 저장하듯 객체를 저장하면 된다.
charMap[char] = charMap[char] ? charMap[char] + 1 : 1;
charMap object에 해당 char가 있으면 +1, 없으면 1로 key와 value를 선언해준다.
✔ for ... of
for( let char of str ) {} 처럼 입력값으로 받은 str의 character를 순서대로 하나씩 가져와 loop을 실행하는 for loop이다.
classic for loop처럼 index를 하나하나 지정해줘야하는 번거로움을 없앨 수 있다.(오타 발생 사전 제거에 유용함)
✔ for ... in
for( let char in charMap ) {} 처럼 charMap object의 key를 순서대로 하나씩 가져와 loop을 실행하는 for loop이다.
객체(object)를 loop하고 싶을 때 사용할 수 있다.
Full Code
function maxChar(str) { |
const charMap = {}; |
let max = 0; |
let maxChar = ''; |
for (let char of str) { |
if (charMap[char]) { |
charMap[char]++; |
} else { |
charMap[char] = 1; |
} |
} |
for (let char in charMap) { |
if (charMap[char] > max) { |
max = charMap[char]; |
maxChar = char; |
} |
} |
return maxChar; |
} |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
백준 8958번: OX 퀴즈(OX Quiz) Node.js(JavaScript) (0) | 2019.12.27 |
---|---|
The Classic FizzBuzz(3의 배수와 5의 배수 찾기) Node.js(JavaScript) (0) | 2019.12.27 |
Palindrome(회문 구조) 확인하기 Node.js(JavaScript) (0) | 2019.12.24 |
Reverse Int(숫자 거꾸로 바꾸기) Node.js(JavaScript) (0) | 2019.12.24 |
Reverse String(문자열 거꾸로 바꾸기) Node.js(JavaScript) (0) | 2019.12.23 |