문자열의 개수 비교

문제 설명

대문자와 소문자가 혼합된 문자열 s가 주어집니다. s의 ‘p’의 수와 ‘y’의 수를 비교하여 같으면 True, 다르면 False를 반환하는 해를 완성하시오. ‘p’도 ‘y’도 없으면 항상 True를 반환합니다. 단, 개수를 비교할 때 대문자와 소문자는 구분하지 않는다.

예를 들어 s가 “pPoooyY”이면 true를 반환하고 s가 “Pyy”이면 false를 반환합니다.

제한

  • 문자열 길이 s: 50 이하의 자연수
  • 문자열 s는 문자로만 구성됩니다.

샘플 I/O 응답

“푸이이” 진실
“파이” 잘못된

I/O 예시 설명

I/O 예제 #1
‘p’의 개수는 2이고 ‘y’의 개수는 2이므로 true를 반환합니다.

I/O 예제 #2
‘p’의 개수는 1이고 ‘y’의 개수는 2이므로 false를 반환합니다.

솔루션 1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    function solution(s){
    let answer = true;
    let uc = s.toUpperCase(); //toUpperCase() == 문자열을 대문자로 바꿔서 반환
    let a = (...uc);
    console.log(a);
    let count1=0, count2=0;  //초기값 정수 0으로 지정 안하면 NaN나옴.
    for(let i=0; i<a.length; i++){
        if(a(i) == 'P'){
        count1 += 1;
        }
        if(a(i)=='Y'){
        count2 += 1;
        }
        if(count1 == count2){
            answer = true;
        }
        else{
            answer =false;
        }
    
    }
    return answer;
}   
    solution("pPoooyY"); //함수는 script 안에서만!
    </script>
</body>
</html>

  • toUpperCase()를 사용하여 문자열을 대문자로 변환
  • 숫자를 셀 때 초기화가 필요합니다! (그렇지 않으면 결과가 NaN으로 반환됩니다.)
  • 스크립트에서만 기능을 실행하십시오!

솔루션 2(다른 솔루션 참조)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        
    function solution(s){
        //console.log(s.match(/p/ig) == s.match(/y/ig)); //match함수는 배열뿐만 아니라 문자열에도 가능-->문자열도 배열(?)
        //console.log(s.match(/p/ig));
        //console.log(s.match(/y/ig));
        t = s.match(/p/);
        console.log
        console.log(typeof
        document.write
       return s.match(/p/ig).length == s.match(/y/ig).length;
        }
        
        //regExp ig 입력하면 대문자와 소문자 구분할 필요 없음.
        solution("pPoooyY");
    </script>
</body>
</html>
  • 내 솔루션에 비해 매우 짧고 간단합니다.
  • 게임 기능문자열과 배열 모두에 적용할 수 있습니다.
  • match() 일치시킬 문자에 대해 i(대소문자 무시) 및 g(모든 요소 일치)로 나눈 배열을 반환합니다./ g를 입력하지 않으면 어레이 값 대신 다음과 같이 표시됩니다. –> g를 입력하여 모든 요소를 ​​찾고 배열로 반환합니다.


문자열의 개수 비교 1

  • match.length로 배열의 길이를 비교하고 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.