문자열 내 p와 y의 개수 (문자열분할split문, filter문)

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("")
- 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
}
}