[알고리즘] 프로그래머스 Javascript - 문자열 내 p와 y의 개수

HJ·2022년 1월 19일
0

JavaScript

목록 보기
23/45

문제 설명

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

제한 사항

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

입출력 예

sanswer
"pPoooyY"true
"Pyy"false

입출력 예 설명

  • 입출력 예 #1
    'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
  • 입출력 예 #2
    'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

문제 풀이

function solution(s){   
    var answer = true;
    let countP = 0; // P 카운트 할 countP 변수 선언 후 값 0으로 초기화
    let countY = 0;// Y 카운트 할 countY 변수 선언 후 값 0으로 초기화
    let str = s.toUpperCase(); // s값을 대문자로 바꿔준 후 str에 저장하여 선언
    for(let i = 0 ; i < str.length ;i++){
        if(str[i]=== 'P'){ //str의 i값이 P와 일치하면
            countP++ //countP에 1을 더한다
        }else if(str[i] === 'Y'){ //str의 i값이 Y와 일치하면
            countY++ //countY에 1을 더한다
        }
    } 
    if(countP !== countY){ //countP와 countY가 같지 않다면
        answer = false //false로 반환
    }else {
        answer = true; //true로 반환
    }
    return answer;
}
console.log(solution("Pyy"))

for문과 if문의 조합으로 풀어가려 했으나 count 부분은 생각지 못했어서 다른 사람의 풀이를 조금 참고하여 풀었다.

다른 사람의 풀이

function numPY(s){
      return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
  }
  console.log(numPY("pPoooyY"))

s값을 대문자로 바꿔준 뒤 P 기준으로 분리한 길이가 Y기준으로 분리한 길이와 일치하는지 확인하는 것 같은데 신기하고 깔끔하면서도 약간은 이해가 덜 됐다.. 팀원에게 물어봐야지

0개의 댓글