https://programmers.co.kr/learn/courses/30/lessons/12916
let s = "pPoooyY";
function solution1(s){
let lower = s.toLowerCase();
let spl = lower.split("")
let pCount = 0;
let yCount = 0;
for(let i = 0; i < s.length; i++){
if(spl[i] == "p"){
pCount += 1;
}else if(spl[i] == "y"){
yCount += 1;
}
}
return pCount + yCount === 0 ? true : pCount === yCount ? true : false;
}
console.log(solution1(s)); // true
- 대소문자의 구분이 없기 때문에 새로운 변수 lower를 생성하여 대문자나 소문자 중 하나를 선택하여 문자를 변환하여 할당한다.
- 반복문에서 사용하기 위해 문자를 split()메서드를 이용하여 개별로 나누어 배열에 담는다.
- p와 y의 갯수를 카운팅 할 변수를 생성한다.
- 반복문을 사용하는데 전체 배열 요소의 length만큼 반복한다. 중첩으로 조건문을 활용하여 배열 요소 index의 문자가 "p" 혹은 "y" 일 경우 생성해놓은 변수에 1씩 누적하여 더해준다.
- 출력값은 삼항연산자를 중첩으로 사용하여 p와 y의 카운팅이 0 일때 true를 출력하고, 아닌 경우 p의 갯수와 y의 갯수가 같으면 true, 다르면 false를 출력한다.
let s = "pPoooyY";
function solution2(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
console.log(solution2(s)); // true
- 대소문자의 구분이 없기 때문에 toUpperCase()메서드로 대문자로 통일 시킨다.
- split()메서드를 활용하여 문자열을 자르는데 기준을 "P" 혹은 "Y"를 잘라낸다.
- 잘라낸 문자열의 length를 추출하여 비교한다.
let s = "pPoooyY";
function solution3(s) {
return s.match(/p/ig).length == s.match(/y/ig).length;
}
console.log(solution3(s)); // true
- match()메서드를 이용하여 p혹은 y를 검색한다. 파라미터값으로 들어간 정규식과 문자열을 매칭하여 찾아주는데 대소문자 구분없이 검색되도록 i플래그를 사용하고 g플래그로 문자 전체를 검색한다.
- length속성으로 match()메서드로 찾아낸 문자의 갯수를 찾아낸다.
- 비교연산자를 사용하여 p와 y의 갯수를 비교한다. 같으면 true, 다르면 false를 반환한다.