문제
풀이 코드
function solution(s) {
let sLower = s.toLowerCase().split('');
let pCount = sLower.filter((item) => item === 'p').length;
let yCount = sLower.filter((item) => item === 'y').length;
return pCount === yCount;
}
풀이 과정
우선, 문자열내의 모든 요소를 소문자로 변경해주고 해당 문자열을 배열로 만들었다. ( toLowerCase, split )
그리고 나서 filter 함수를 통해 p 와 y 만 저장한 배열을 각각 생성하고, 해당 배열의 길이를 각각의 변수에 저장했다.
그리고 그냥 같은지 비교한 값을 반환시켰다
이거 제출하고 나서 생각한건데 변수의 쓰임세와 상수의 쓰임세를 각각 구분해서 사용하면 좋을 것 같다.
해당 코드에서 변수는 사실 필요없다.
모두 const 로 상수정의 하는게 바람직함
다른사람의 코드
// 1 번
function numPY(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
// 2 번
function numPY(s) {
return s.match(/p/ig).length == s.match(/y/ig).length;
}
1 번의 풀이처럼 한줄로 간단하게, 그리고 split 만으로 바로 구분해서 풀이할수가 있다. 이건 생각 못했다
2 번 풀이의 경우 댓글들을 보니 p 나 y 가 아예 없을경우, 오답이 발생한다고 나와있어서 정답은 아닌거 같지만 그럼에도 가져온 이유는
math 라는 함수를 처음보기 때문이다. math 라는 함수도 공부해 봐야 겠다