[프로그래머스] Lv 1. 문자열 내 p와 y의 개수

morecodeplease·2024년 2월 29일
0

프로그래머스 Lv 1

목록 보기
9/19
post-thumbnail

🌭 문제 설명

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

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


🍗 제한 사항

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

🎁 입출력 예시

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

😎 나의 풀이

function solution(s) {
  let str = s.toLowerCase(); // 대문자 소문자가 상관없으니 전부 s로 들어온 문자열을 소문자로 바꿔준다.
  let count = 0; // count할 변수 초기화
  for (let i = 0; i < str.length; i++) { // str을 반복문 돌아서
      if(str[i] === 'p') count++;  // 배열에 'p'가 있으면 count 증가
      else if(str[i] === 'y') count--; // 배열에 'y'가 있으면 count 감소
  }
      return count === 0 ? true : false // count가 0 이면 p의 개수와 y의 개수가 동일하므로 true , 다르면 false 리턴
};

console.log(solution("pPoooyY")); // 출력 : true
console.log(solution("Pyy")); // 출력 false

let ss = "pPPPmM".toLowerCase(); // 문자열은 배열처럼 인덱스로 접근가능 
console.log(ss[4]); // 출력 : m
console.log(typeof(ss)); // 출력 : string
  • 대문자 소문자가 상관없으니 전부 s로 들어온 문자열을 toLowerCase메서드로 소문자로 바꿔준다.
  • count할 변수를 초기화 하고 str을 반복문 돌아서 문자열에 'p'가 있으면 count를 증가시키고 'y'가 있으면 count를 감소시킨다.
  • count0이면 p의 개수와 y의 개수가 동일하므로 true , 다르면 false를 return한다.

🧵 다른 풀이

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

  • stoUpperCase로 대문자로 바꾸고 "P"를 배열에 넣고 이 배열의 길이가 똑같이 "Y"로 나눈 배열이 길이와 같으면 true고 다르면 false를 return한다.

각 문자별로 split을 해서 이 배열의 길이를 비교할 줄은 상상도 못했다..

profile
Everyday's a lesson

0개의 댓글