피스타0204 2022. 5. 28. 14:59

0. 사고 흐름 

 

1) understand the problem

자기만의 방식으로 문제를 이해해본후, input과 output을 확인한다.

2) explore concreate examples

input, output 예제를 작성해본다.

3) break it down

상황별로 나눈다.

4) solve/simplify

단순화시킨다.

5) look back and refactor

다른 사람들의 것과 비교한다.

 

 

1. 문자열을 받아 각 문자의 수를 반환하는 함수 작성하기

function charCount(str) {
     var result = {};
     for( var i = 0; i < str.length; i++)
         {
             var char = str[i].toLowerCase()
             if( result[char] > 0)
             {
                 result[char]++;
             }
             else{
                 result[char]=1;
             }
         }
     return result;
 }

 

2.1 /[a-z0-9]/

function charCount(str) {
    var result = {};
    for( var i = 0; i < str.length; i++)
        {
            var char = str[i].toLowerCase()
            if( /[a-z0-9]/.result[char] > 0)
            {
                result[char]++;
            }
            else{
                result[char]=1;
            }
        }
    return result;
}

 

 

 

2.2 range-based for statement

 

function charCount(str) {
    var result = {};
    for( var char of str)
        {
            char = char.toLowerCase()
            if( /[a-z0-9]/.result[char] > 0)
            {
                result[char]++;
            }
            else{
                result[char]=1;
            }
        }
    return result;
}

 

2.3 else 제거 || 1;

 

function charCount(str) {
    var result = {};
    for( var char of str)
        {
            char = char.toLowerCase()
            if( /[a-z0-9]/.test[char])
            {
                result[char] = result[char]++ || 1;
            }

        }
    return result;
}

 

 

2.4 charCodeAt(0)     과         isAlphaNumeric

아스키코드 번호를 알려주는 charCodeAt()를 이용

0-9, 알파벳을 반환해주는 isAlphaNumeric 이용 

function charCount(str) {
    var result = {};
    for( var char of str)
        {
            char = char.toLowerCase()
            if(isAlphaNumeric(char))
            {
                result[char] = result[char]++ || 1;
            }

        }
    return result;
}

function isAlphaNumeric(char) {
    var code = char.charCodeAt(0);
    if (!(code > 47 && code < 58) && // numeric (0-9)
        !(code > 64 && code < 91) && // upper alpha (A-Z)
        !(code > 96 && code < 123)) { // lower alpha (a-z)
      return false;
    }
  return true;
};