[프로그래머스 | JavaScript] 문자열 내 p와 y의 개수

728x90
반응형

input: s = "pPoooyY"

output: true

1. 내가 푼 풀이

function solution(s){
    let p = 0;
    let y = 0;
    
    let s_arr = s.split('');
    s_arr.forEach(x => {
       if(x === 'p' || x === 'P')
           p++;
       else if(x === 'y' || x === 'Y')
        y++;
    });

    if(p === y) {return true;}
    else { return false;}
}

* 문자열을 배열로 변환 > p의 개수와 y의 개수 카운트 > 두개의 수개 같으면 true 아니면 false 반환

 

2. 다른 사람 풀이

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

> 모두 대문자로 변경후, P로 나눈 길이 = Y로 나눈 길이 

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

> 정규식으로 ( i: 대소문자 구분없이  / g : 전역) p와 y의 길이 비교하기

 

2-1. 강의 풀이

function solution(s){
  var result = true;
  s = s.toUpperCase();
  var num = 0;
  for(var i = 0; i < s.length; i++){
    if(s[i] === 'P') num++; // p이면 갯수 더하기
    if(s[i] === 'Y') num--; // y이면 갯수 빼기
  } 
  result = (num === 0); // p, y 갯수가 같으면 0 (p가 많으면 양수, 반대 음수)

  return result;
}

* string.toUpperCase(); // 대문자로 모두 변경

 

 

 

[출처]

1. 프로그래머스

 

반응형