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;
};
'프론트엔드 > javascript 알고리즘 & 자료구조 마스터 클래스' 카테고리의 다른 글
section3. Evaluate the performance of an object (0) | 2022.05.23 |
---|---|
section2. Big O notation (0) | 2022.05.16 |
section1 (0) | 2022.05.16 |