ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 : 문자열 내 p와 y의 개수
    카테고리 없음 2023. 1. 27. 05:26

    1, 내가 푼 것

    function solution(s){
        var answer = true;
        var arr = [...s];
        var numP = 0;
        var numY = 0;
    
        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    
        for(var i = 0; i < arr.length; i++){
            if(arr[i] == "p" || arr[i] == "P"){
                numP++;
            }
            if(arr[i] == "y" || arr[i] == "Y"){
                numY++;
            } 
        }
    
        if(numP !== numY){
            answer = false;
        }
        //당연히 틀렸음 문자열은 배열이 아님
    
        return answer;
    }

    - 얼레벌레 풀긴 했지만, 내가 생각한 방법을 실행시키기 위해 mdn, 구글링을 이용해서 푼 첫 문제!

    - 이렇게해서 언제 ㅋㅋㅋ... 준비가 되나 싶지만 먼가 해낸 것 같아 기분이 좋다

    - 문자열을 배열로 만드는 방법을 배움!

    [...문자열명]

     

    2. 다른 사람들 풀이

    - 와, 이건 진짜 똑똑한 사람들이 많았음

    1) -님

    function numPY(s){
      //함수를 완성하세요
        return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
    }
    
    
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    console.log( numPY("pPoooyY") )
    console.log( numPY("Pyy") )

    - 일단 소문자와 대문자가 구분되지 않기 때문에, 나처럼 두 개를 굳이 다 쓰는 것보다는

    toUpperCase()를 이용하여 문자를 하나로 맞추고 갯수를 세는 경우가 많았다!

    - 그리고 위에처럼 하면, 걍 저기서 true와 false를 뽑아주니까 굳이 true와 false를 쓸 필요가 없음!! 이건 진짜 지혜다

     

    2)

    function numPY(s) {
      return s.match(/p/ig).length == s.match(/y/ig).length;
    }
    
    
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    console.log( numPY("pPoooyY") )
    console.log( numPY("Pyy") )

    - match 에 length 를 붙일 수 있다더라.. 일단 match 부터 몰랐기 때문에 ㅋㅋㅋㅋ ㅜ 새로운 거 알아갑니다

    - 대신 이거는 p와y가 둘 다 없을 때 오류가 난다고 한다. 이에대한 댓글 정보

    이렇게 예외처리를 해줘야 한다는 점!

     

    3) 문건우님

    function solution(s){
    
        return [...s.toLowerCase()].reduce((acc, cur) => {
            if(cur ==='p') return acc + 1;
            else if(cur ==='y') return acc - 1;
            return acc;
        }, 0) ? false : true;
    }

    - 이것도 신기하고? 좋았음!! 

    - 계산을 통해 false와 true를 할 수 있다니..생각도 못해봄

     

    //다들 넘 똑똑하시다 나두 똑똑해지고싶어라...

Designed by Tistory.