프로그래머스 문자열 내 p와 y의 개수 (javascript)

이진우·2022년 7월 21일
0

문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

정답

function solution(s){
    let answer
    let lower = s.toLowerCase()
    let sSplit = lower.split('').reduce( (acc,cur)=>{
        acc[cur] = (acc[cur] || 0)+1; 
        return acc;
    },{})
    sSplit.p === sSplit.y ? answer = true : answer = false

    return answer;
}

풀이방식

  1. 대소문자 구분하지 않는다고 했으니 소문자(혹은 대문자)로 치환해준다.
  2. split을 통해 한글자씩 자르고 reduce를 통해 각 문자별 갯수를 객체로 만들어서 반환해 준다.
  3. 마지막으로 두개의 갯수가 같을경우 참을 반환하고 아닐경우 거짓을 반환해준다.

풀면서 배운점

  • 자바스크립트에서는 Boolean값을 return을 해주려면 변수에 담아서 리턴을 해줘야한다.
    마지막 삼항문에서 return true를 해주니 되지않아서 위에 변수를 선언만해두고 삼항문에서 담아주니 정상 출력되었다.
  • reduce메소드를 처음 써봤는데 손쉽게 객체로까지 반환을 할 수 있어서 잘 배워서 배열다룰때 사용하면 요긴하겠다 라는 생각을했다🤓
profile
초보개발자의 개발일기

0개의 댓글