카테고리 없음

프로그래머스 : 문자열 내 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를 할 수 있다니..생각도 못해봄

 

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