프로그래머스

[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를 찾습니다.

 

나중에 비슷한 유형의 문제를 풀게 된다면 정규 표현식을 사용해 봐도 좋을 것 같다.