Algorithm - 문자열 내 p와 y의 개수

SeowooCHo2·2022년 5월 14일
0

알고리즘

목록 보기
16/28
post-thumbnail

문자열 내 p와 y의 개수

<프로그래머스 문제를 기반으로 합니다>

문제 설명

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

p 랑 y 대소문자 구분 없이 개수 파악해서 같으면 true, 다르면 false 👍
둘 다 없으면 true 👌

제한사항

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

s			answer
"pPoooyY"	true
"Pyy"		false

<입출력  설명>

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

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

어떻게 풀까? 🙄

  1. 일단 대소문자 통일 해주기 위해 toUpperCase() / toLowerCase() 쓰면 좋을 것 같다.
  2. 반복문 돌려서 해당 인덱스 값이 'p' / 'y'랑 같으면 조치해주는 게 필요할 것 같고
  3. split()함수 쓰면 좀 더 간결하게 코딩할 수 있을거 같고??😒

<풀이 완성 코드>

function solution(s){
    let count = 0
    let str = s.toUpperCase()
    
    for(let i = 0; i < s.length; i++){
        if(str[i] === 'P'){
            count += 1
        }else if(str[i] === 'Y'){
            count -= 1
        }
    }
    return count === 0 ? true : false
}

count 변수를 지정해서 이리 돌리고 저리 돌리고 하다가
'P' 나오면 더해주고 'Y' 나오면 빼줬을 때 0 나오면 같은거잖아!!!╰(°▽°)╯

오케이 레스기릿 하고 짠 코듭니다. 👍

<추가 풀이 완성 코드>

split() 한번 써보면 될 거 같은데?? 하다 생겨난 미친 코드

function solution(s){
 return s.toUpperCase().split('P').length === s.toUpperCase().split('Y').length
}

훌리 쉣 이걸 내가 생각해내다니 코딩하고 탄성을 질러버렸다(╯°□°)╯︵ ┻━┻

'P' / 'Y' 가 같은 개수로 들어가 있으면 split()으로 도출된 배열의 길이가 같을 것이라는 생각이 어떻게 났는지 스스로가 대견해버린다

미친

profile
먹고 배우는 것엔 아끼지 말자구 ( ̄︶ ̄)↗ 

0개의 댓글