September 8th 2018
Description: - Given an array (arr) as an argument complete the function countSmileys that should return the total number of smiling faces.
Rules for a smiling face:
Example cases: countSmileys([':)', ';(', ';}', ':-D']); // should return 2; countSmileys([';D', ':-(', ':-)', ';~)']); // should return 3; countSmileys([';]', ':[', ';*', ':$', ';-D']); // should return 1;
주어진 배열에 Smile Faces가 몇 개 있는지 확인 후, 그 수를 반환하는 문제입니다.
문자열의 순서에 따라 적합한 character가 들어 갔는지 확인하면 되는 간단한 문제입니다. 하지만, 스마일의 '코'는 있어도 되고 없어도 되기 때문에 문자열의 길이기 2일때와 3일때 두 가지로 조건을 다르게 주어 코드를 짰습니다.
function countSmileys(arr) {
var count = 0;
arr.forEach(function(cur) {
if (cur[0] === ':' || cur[0] === ';') {
if (cur.length === 2 && (cur[1] === ')' || cur[1] === 'D')) {
count++;
} else if (cur.length === 3 && (cur[1] === '-' || cur[1] === '~')) {
if (cur[2] === ')' || cur[2] === 'D') {
count++;
}
}
}
});
return count;
}
정규 표현식을 사용하면 좀 더 간략하게 코드를 짤 수 있을 것 같은데 향후에 정규 표현식으로 다시 풀어봐야 겠습니다.