문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한 조건
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.
입출력 예
s answer
"pPoooyY" true
"Pyy" false
function solution(s) {
let answer;
let countP = 0;
let countY = 0;
for (let i = 0; i < s.length; i++) {
if (s[i].toUpperCase() === 'P') {
countP++;
} else if (s[i].toUpperCase() == 'Y') {
countY++;
}
}
if (countP === countY) {
answer = true;
} else {
answer = false;
}
return answer;
}
console.log(solution('pPYPyy'));
문자열을 배열로 만들어서 반복문을 돌리면서 P,Y의 갯수를 구하고 그 수들을 비교하면 되지 않을까 생각했다.
근데 문자열을 배열로 어떻게 만들지 생각하다 문자열도 배열처럼 인덱스로 각 문자 요소에 접근이 가능하다는걸
알게됐고 굳이 배열로 만들지 않고 풀 수 있었다.
다른 사람들 풀이를 보면 아주 간단히 풀었는데 아직은 가장 생각하기 쉬운 방식으로 문제를 풀고있다.
변수 P와 Y를 나눠줄 필요없이 예를 들어 num이라는 하나의 변수만 지정하고 P의 갯수 만큼은 더하고 Y의 갯수만큼은 빼줘서 0이면 true를 리턴하게 했다면 더 간단하게 할 수 있었다. 여기까지는 한 번쯤 생각해볼 수 있었을꺼 같다.
[...문자열]로 문자열을 배열로 만드는 법
문자열 메서드