문제
영어 알파벳으로 구성된 문자열을 입력받아, 그 안에 포함된 고리(ring)의 총 개수를 세는 JavaScript 함수를 작성해야 합니다.
여기서 말하는 고리란 글자 모양에 있는 동그란 부분을 의미합니다. 예를 들어 'O', 'A', 'D', 'P', 'Q', 'R', 'a', 'b', 'd', 'e', 'g', 'o', 'p', 'q'와 같은 글자는 각각 하나의 고리를 가지며, 'B'는 두 개의 고리를 가집니다.
예시 코드
다음은 해당 문제를 해결하는 코드입니다 −
const str = 'some random text string';
function countRings(str){
const rings = ['A', 'D', 'O', 'P', 'Q', 'R', 'a', 'b', 'd', 'e', 'g', 'o', 'p', 'q'];
const twoRings = ['B'];
let score = 0;
str.split('').map(x => rings.includes(x)
? score++
: twoRings.includes(x)
? score = score + 2
: x
);
return score;
}
console.log(countRings(str));
코드 설명
위 코드의 동작 방식은 다음과 같습니다.
rings배열에는 고리가 하나인 알파벳들의 목록이 저장됩니다.twoRings배열에는 고리가 두 개인 'B'가 저장됩니다.split('')메서드를 사용해 문자열을 한 글자씩 분리한 뒤, 각 글자가 어느 배열에 포함되어 있는지 확인하고 그에 맞게 점수를 증가시킵니다.- 모든 글자를 확인한 후 최종 점수, 즉 고리의 총 개수를 반환합니다.
출력 결과
7