문제 :
내 풀이 :
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를 찾습니다.
나중에 비슷한 유형의 문제를 풀게 된다면 정규 표현식을 사용해 봐도 좋을 것 같다.
'프로그래머스' 카테고리의 다른 글
[JavaScript] 콜라츠 추측 - 프로그래머스 (0) | 2024.08.09 |
---|---|
[JavaScript] 하샤드 수 - 프로그래머스 (0) | 2024.08.08 |
[JavaScript] 핸드폰 번호 가리기 - 프로그래머스 (0) | 2024.08.06 |
[JavaScript] x만큼 간격이 있는 n개의 숫자 - 프로그래머스 (0) | 2024.08.05 |
[JavaScript] 삼각형의 완성조건 (1) - 프로그래머스 (0) | 2024.08.02 |