프로그래머스 Level 1 - 문자열 내 p와 y의 개수

크롱·2023년 9월 26일
0

코딩테스트

목록 보기
12/61
post-thumbnail

문제

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

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

나의 풀이

p와 y를 우선 0으로 설정하고, 반복문을 통해 문자열을 하나씩 판별해갔다.
그리고 p와 y를 비교했음

function solution(s){
 let answer = true;
    let p =0
    let y = 0
    
     for (let i in s) {
    if (s[i] === 'p' || s[i] === 'P') {
      p++;
    } else if (s[i] === 'y' || s[i] === 'Y') {
      y++;
    }
  }
  if(p==y){
      return answer
  }else{
      answer=false
      return answer
  }

 
}

너무....길어...

다른 풀이

정규식 /ig

ig는 정규식의 플래그(Flag)입니다.

i: 대소문자를 구별하지 않고 매치합니다. 즉, 대소문자를 무시하고 검색합니다.
g: 전역(Global) 검색을 수행합니다. 즉, 문자열 전체에서 패턴과 일치하는 모든 부분을 찾습니다.

function solution(s){
  return s.match(/p/ig).length == s.match(/y/ig).length
}

solution('pPoOyY') 
'pPoOyY'.match(/p/ig) // ['p','P']

split("Y")

function numPY(s){
  //함수를 완성하세요
    return s.toUpperCase().split("P").length
      === s.toUpperCase().split("Y").length;
}

profile
👩‍💻안녕하세요🌞

0개의 댓글