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

이한솔·2023년 9월 25일
0
post-thumbnail

✨️문제 설명

: 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 리턴
-> 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

-> 자세한 내용 보러가기

🎲자바 풀이

class Solution {
    boolean solution(String s) {
        s = s.toLowerCase();
        int cnt = 0;
        for(char ch : s.toCharArray()){
            if(ch == 'p'){
                cnt++;
            }else if(ch == 'y'){
                cnt--;
            }
        }
        return cnt == 0 ? true : false;
    }
}

풀이 설명

: 개수를 셀 때 대소문자를 구분하지 않는다고해서, 전부 소문자로 변환한 후 반복문을 돌려 p와 y의 개수를 더하거나 뺐다.
: 만약 cnt가 0이라면, p와 y의 개수가 아예 없거나 같으므로 True를 반환하고, 0이 아닐 경우 False를 반환한다.

다른 사람 풀이

class Solution {
    boolean solution(String s) {
        s = s.toUpperCase();

        return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
    }
}

: s를 모두 대문자로 변환하고, s.chars()를 통해 문자 스트림으로 변환
: filter(e -> 'P' == e) : 스트림에서 'P'인 문자만을 필터링
-> 람다표현식 e -> 'P' == e : 스트림 요소가 'P'와 일치하는지 확인
: count() : 이 부분은 필터링된 스트림요소 개수를 계산
=> 각각의 개수가 동일한지 확인하여 결과를 반환

profile
개인 공부용

0개의 댓글