프로그래머스
[JavaScript] 문자열 내 p와 y의 개수 - 프로그래머스
jjangsh
2024. 8. 7. 20:31
문제 :
내 풀이 :
function solution(str){
let pCnt = 0;
let yCnt = 0;
const lowercaseStr = str.toLowerCase();
lowercaseStr.split('').forEach((lowercaseChar) => {
if(lowercaseChar === 'p')
pCnt++;
if(lowercaseChar === 'y')
yCnt++;
})
return pCnt === yCnt ? true : false;
}
다른 사람의 풀이 :
function solution(s){
const pCount = (s.match(/p/ig) || []).length;
const yCount = (s.match(/y/ig) || []).length;
return pCount === yCount;
}
s.match(/p/ig)는 문자열 s에서 'p' 또는 'P'에 매칭되는 모든 부분을 배열로 반환합니다. 만약 'p'가 없다면 null을 반환하므로 || []를 사용하여 null일 경우 빈 배열을 반환한다.
pCount는 이 배열의 길이로, 즉 'p'의 개수를 나타낸다.
같은 방식으로 yCount는 'y'의 개수를 나타낸다.
마지막으로 pCount와 yCount가 같은지 비교하여 같으면 true, 다르면 false를 반환한다
위 풀이는 정규 표현식을 사용했는데 알아보겠다.
정규 표현식 /p/ig
- /p/ : 슬래시(/)로 둘러싸인 부분이 정규 표현식 패턴을 나타냅니다. 여기서 p는 찾고자 하는 문자입니다.
- i : 대소문자를 구분하지 않겠다는 플래그입니다. 즉, p와 P 모두를 찾습니다.
- g : 전역 검색 플래그로, 문자열 내에서 모든 p를 찾겠다는 의미입니다. 첫 번째 p만 찾는 것이 아니라 모든 p를 찾습니다.
나중에 비슷한 유형의 문제를 풀게 된다면 정규 표현식을 사용해 봐도 좋을 것 같다.