ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문자열 내 p와 y의 개수 (문자열분할split문, filter문)
    Coding Test/프로그래머스 Lv.0 2023. 5. 23. 21:13

    https://school.programmers.co.kr/learn/courses/30/lessons/12916

     

     

    문자열 abcd를 한 글자 한 글자 분할 시 let arr = 매개변수.split("")

     

    대문자와 소문자가 섞여있는 문자열 s가 주어집니다.

    s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return라는 solution를 완성하세요.

    'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.

    단 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

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

     

    <조건>

    1.  대문자와 소문자가 섞여있는 문자열 s

    2.  문자열 s에서  'p'의 개수와 'y'의 개수 비교
    3.  p의 개수 = y의 개수 : return Ture
    4.  p의 개수 != y의 개수 : return False
    5.  Return True : 'p', 'y' 모두 하나도 없는 경우
    6.  개수비교 : 대소문자 구분X
    7.  제한사항1. s.length =< 50
    8.  제한사항2. s는 알파벳

     

    != : 같지 않다.

    = 는 대입해주는 의미. 같다는 뜻이 아니라 대입한다는 의미다. 
    == 안에 있는게 똑같다. 3 == '3' (숫자열, 문자열 but 3)
    === 안에 있는것도 똑같고, 형태도 똑같다. 3 === 3 (숫자열, 숫자열)

     

     

    예를들어

    s가 "pPoooyY"면 true를 return하고  (p의 개수 2개 = y의 개수 2개이므로 true)

    "Pyy"라면 false를 return한다. (p의 개수  !=  y의 개수이므로 false)

     

    function solution (s) {
     s = 'pPoooyY'
    array = ['p', 'P', 'o', 'o', 'o', 'y', 'Y']
    p 와 P만 요소로 갖는 array를 만들어서 array.length를 출력한다.

     

    function solution (s) {

     let arr = s.split("")

     

     
      let str6 = "apple, banana, kiwi";
      let result02 = str6.split(",");          -> split은 문자열 분할, 콤마를 기준으로 문자를 분할한다.
      console.log(result02);                        즉 ['apple', 'banana', 'kiwi']
     
        위에서 let arr = s.split("")  -> 쌍따옴표 안에 아무것도 없으면 그냥 문자 하나하나를 분할한다.
     

     - 03(데이터타입 문자).js 참고 (문자열 분할 split)

    - 17(배열2).js 참고. 필터링된 값을 추출하는 filter 메소드.

    - 06(연산자).js 참고. (논리합 연산자 (||) : 두 값중 하나라도 true인 경우 true 반환)

     

    문자열에서의 소문자p와 대문자P를 포함하는 문자열 arrayP

     

    let arrayP = s.filter(funtion(item)) {
    return item === 'p' || item === 'P'

    }

     

    문자열에서의 소문자y와 대문자Y를 포함하는 문자열 arrayY

     

    let arrayY = s.filter(funtion(item)) {
    return item === 'y' || item === 'Y'

    }

     

     

    위의 <조건>에서

    True를 return해야 하는 경우

    1. p의 개수 = y의 개수인 경우

    2. 문자열에 'p', 'y' 모두 하나도 없는 경우

     

    -> 조건이 두개이므로, if ((조건1) || (조건2))로 묶는다.

     

    False를 return해야 하는 경우

    1. p의 개수 != y의 개수 인 경우

     

    근데, p의 개수 = y의 개수인 경우가 아닌 경우는 p의 개수 != y의 개수 인 경우이므로

    else if문을 써서 False를 return해야 하는 조건을 따로 쓸 필요 없이 아래처럼 바로 else문을 써도 된다.

     

    if ((true조건1) || (true조건2)) {

     return true
    } else {

     return false

    }

     

    1. p의 개수 = y의 개수인 경우 ( arrayp.length === array.length)

    2. 문자열에 'p', 'y' 모두 하나도 없는 경우 (arrayp.length ==0 && arrayy.length ==0)

     

    따라서 답은 아래와 같다.

     

     
       function solution(s) {
           let arr = s.split("")
           let arrayp = arr.filter(function (item) {
               return item === 'p' || item === 'P'
           })
           let arrayy = arr.filter(function (item) {
               return item === 'y' || item === 'Y'
           })

           if ((arrayp.length === arrayy.length) ||
               (arrayp.length == 0 && arrayy.length == 0)) {
               return true
           }
           else {
               return false
           }
       }
     
    function solution (s) {
         let arr = s.split("")
        let arrayp = arr.filter(function(item){
    return item === 'p' || item === 'P'
     })
        let arrayy = arr.filter(function(item){
    return item === 'y'|| item === 'Y'
        })
        
       if(( arrayp.length === arrayy.length) || 
          (arrayp.length ==0 && arrayy.length ==0 )){
       return true
       }
        else {
    return false
        }   
    }

    댓글

Designed by Tistory.