[프로그래머스] 코딩테스트 연습 - 문자열 내 p와 y의 개수 (javascript)

지미노·2022년 8월 31일
0

코딩테스트

목록 보기
18/40
post-thumbnail
post-custom-banner

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

제한사항
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.

기본적으로 주어진 코드

function solution(s){
    var answer = true;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    console.log('Hello Javascript')

    return answer;
}

생각해본 풀이법
대문자와 소문자가 섞여있으니

(y의 개수+Y의 개수) - (p의 개수+P의 개수) ? false : true

이런식으로 구성하면 될것 같다.

이제 개수를 어떻게 셀지 생각해보자.

  1. count() 사용하기
  2. filter로 걸러내서 배열 length 뽑아내기

일단 두개 다 배열로 넣어줘야 가능할 것 같다.
Array.from(s)

근데 생각해보니까 대문자, 소문자 개수를 굳이 따로 세야 하나???? 모두 대문자/소문자로 통일시켜서 바꿔버리면 되잖아?

s.toUpperCase() 사용하기!!!!

그렇다면 요걸 연결하면

Array.from(s.toUpperCase())요렇게

근데 count 함수 있지 않았나...? 찾아봐도 안나오네.... 그럼 걍 filter 사용해보도록 하겠음.

s.filter(a => a=='P').length
s.filter(b => b=='Y').length

그래서 내가 제출한 최종 답안!!!

function solution(s){
    const arr = Array.from(s.toUpperCase());
    return (arr.filter(a => a == 'P').length) - (arr.filter(b => b == 'Y').length) ? false : true
}
post-custom-banner

0개의 댓글