대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
const solution = (s) => {
const lowerString = s.toLowerCase();
const pList = lowerString.match(/p/g);
const yList = lowerString.match(/y/g);
const pCount = pList ? pList.length : 0;
const yCount = yList ? yList.length : 0;
return pCount === yCount ? true : false;
};
- 대소문자 여부를 신경쓰면 안 되므로 미리 하나로 통일해야 한다.
- 매개변수
s
를toLowerCase()
메소드로 소문자로 변환한다. pList
와yList
에 각각p
와y
를 담은 배열을 저장한다. 정규식에 글로벌 옵션을 사용해 문자열 전체를 탐색한다.- 매칭되는 문자열이 하나도 없을 경우
null
값이 담기므로, 만약null
이라면 대신 0을, 아니라면 배열의 길이를 반환한다. - 최종적으로
pCount
와yCount
를 비교하여 같으면true
, 다르면false
를 반환한다.