본문 바로가기
프론트엔드/javascript 알고리즘 & 자료구조 마스터 클래스

section4. how to approach problems

by 피스타0204 2022. 5. 28.

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;
};