(Lv. 1) 문자열 내 p와 y의 개수 (문제 링크)
대문자와 소문자가 섞여있는 문자열 s가 주어졌을 때,
s 안의 'p'의 개수와 'y'의 개수를 비교하여 같으면 true, 다르면 false를 return하는 solution을 완성하라.
예를 들어, s가 'pPoooyY'면 true를 return하고, 'Pyy"면 false를 return한다.
function solution(s) {
// p와 y를 count할 변수를 선언
let pyCount = 0;
// s의 모든 문자를 대문자로 변경
s = s.toUpperCase();
// 전체 문자열을 순회
for (let i=0; i<s.length; i++) {
if (s[i] === 'P') pyCount++; // p 발견 시 변수+1
if (s[i] === 'Y') pyCount--; // y 발견 시 변수-1
}
// 최종 결과가 0이면 true, 아니면 false를 반환
let answer = pyCount === 0 ? true : false;
// 결과 출력
return answer;
}
초기 코드
function solution(s) {
let pCount = 0; // p의 개수를 세는 변수
let yCount = 0; // y의 개수를 세는 변수
for (let i=0; i<s.length; i++) {
if (s[i] === 'p' || s[i] === 'P') pCount++; // p, P 발견 시 pCount+1
if (s[i] === 'y' || s[i] === 'Y') yCount++; // y, Y 발견 시 yCount+1
}
// pCount의 값과 yCount의 값을 비교하여 같으면 true, 다르면 false 반환
let answer = pCount === yCount ? true : false;
// 결과 출력
return answer;
}
개선 과정
// AS-IS
if (s[i] === "p" || s[i] === "P") pCount++;
// TO-BE
s.toUppercase();
if (s[i] === "P") pCount++;
// AS-IS
if (s[i] === "P") pCount++;
if (s[i] === "Y") yCount++;
let answer = pCount === yCount ? true : false;
// TO-BE
if (s[i] === "P") pyCount++;
if (s[i] === "Y") pyCount--;
let answer = pyCount === 0 ? true : false;