level 1. 문자열 내 p와 y의 개수 (Javascript)

문자열 내 p와 y의 개수

문제

numPY함수는 대문자와 소문자가 섞여있는 문자열 s를 매개변수로 입력받습니다.
s에 ‘p’의 개수와 ‘y’의 개수를 비교해 같으면 True, 다르면 False를 리턴하도록 함수를 완성하세요. ‘p’, ‘y’ 모두 하나도 없는 경우는 항상 True를 리턴합니다.
예를들어 s가 “pPoooyY”면 True를 리턴하고 “Pyy”라면 False를 리턴합니다.

풀이 (본인)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function numPY(s){
var cntP = 0;
var cntY = 0;
var up = s.toUpperCase()
//함수를 완성하세요
for (var a = 0; a < up.length ; a++){
if(up.charAt(a) == 'P'){
cntP += 1;
}
else if(up.charAt(a) == 'Y'){
cntY += 1;
}
}
return (cntP === cntY)? true : false;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(numPY("pPoooyY"));
console.log(numPY("pPoooY"));
console.log(numPY("ooo"));

풀이 (다른 사람(오답))

1
2
3
4
5
6
7
function numPY(s) {
return s.match(/p/ig).length == s.match(/y/ig).length;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(numPY("pPoooyY"));
console.log(numPY("pPoooY"));
console.log(numPY("ooo"));

배운점

  • match 메소드에 대해 다른사람의 코드를 보고 배웠지만 에러가 난다.
  • 정규표현식을 사용하면 코드가 짧아진다.
공유하기