대문자와 소문자가 섞여있는 문자열 s
가 주어집니다. s
에 'p'
의 개수와 'y'
의 개수를 비교해 같으면 True
, 다르면 False
를 return 하는 solution를 완성하세요.
'p'
, 'y'
모두 하나도 없는 경우는 항상 True
를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s
가 "pPoooyY"
면 true
를 return하고 "Pyy"
라면 false
를 return합니다.
s
의 길이 : 50 이하의 자연수s
는 알파벳으로만 이루어져 있습니다.'p'
의 개수 2개, 'y'
의 개수 2개로 같으므로 true를 return 합니다.'p'
의 개수 1개, 'y'
의 개수 2개로 다르므로 false를 return 합니다.function solution(s) {
let str = s.toLowerCase(); // 대문자 소문자가 상관없으니 전부 s로 들어온 문자열을 소문자로 바꿔준다.
let count = 0; // count할 변수 초기화
for (let i = 0; i < str.length; i++) { // str을 반복문 돌아서
if(str[i] === 'p') count++; // 배열에 'p'가 있으면 count 증가
else if(str[i] === 'y') count--; // 배열에 'y'가 있으면 count 감소
}
return count === 0 ? true : false // count가 0 이면 p의 개수와 y의 개수가 동일하므로 true , 다르면 false 리턴
};
console.log(solution("pPoooyY")); // 출력 : true
console.log(solution("Pyy")); // 출력 false
let ss = "pPPPmM".toLowerCase(); // 문자열은 배열처럼 인덱스로 접근가능
console.log(ss[4]); // 출력 : m
console.log(typeof(ss)); // 출력 : string
s
로 들어온 문자열을 toLowerCase
메서드로 소문자로 바꿔준다.count
할 변수를 초기화 하고 str
을 반복문 돌아서 문자열에 'p'
가 있으면 count
를 증가시키고 'y'
가 있으면 count
를 감소시킨다. count
가 0
이면 p
의 개수와 y
의 개수가 동일하므로 true
, 다르면 false
를 return한다.function numPY(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
s
를 toUpperCase
로 대문자로 바꾸고 "P"
를 배열에 넣고 이 배열의 길이가 똑같이 "Y"
로 나눈 배열이 길이와 같으면 true
고 다르면 false
를 return한다.각 문자별로
split
을 해서 이 배열의 길이를 비교할 줄은 상상도 못했다..