[프로그래머스] 문자열 내 p와 y의 개수(자바)

지수·2021년 7월 24일
0
post-thumbnail

👩‍🏫 문제

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

문제 설명

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

제한조건

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

입출력 예

sanswer
"pPoooyY"true
"Pyy"false
  • 입출력 예 #1
    'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
  • 입출력 예 #2
    'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

👩‍💻 풀이

class Solution {

    static boolean solution(String s) {
        s = s.toLowerCase();
        char[] s1 = s.toCharArray();

        int pcnt = 0;
        int ycnt = 0;
        for(char item : s1){
            if(item == 'p'){
                pcnt++;
            }
            else if(item == 'y'){
                ycnt++;
            }
        }
        return pcnt == ycnt;
    }
}

💭 학습

  • toLowerCase(), toUpperCase() : 대소문자 변환 메소드
  • toCharArray() : String을 한글자씩 쪼개어 char 타입 배열에 넣어주는 메소드

▲ 위 풀이에 람다식이 사용되었다고 해서 알아본 람다식 filter

  • 람다식 : 익명 함수(이게 뭔지 아직 직관적인 느낌이 안온다..)
    = 람다 표현식(lambda expression)이란 간단히 말해 메소드를 하나의 식으로 표현한 것
    = 람다식은 다를 객체들에 적용 가능한 연산을 모두 지원하는 개체
    함수를 값으로 사용 할 수도 있으며, 파라메터로 전달 및 변수에 대입 하기와 같은 연산들이 가능

  • 람다식 filter : 컬렉션을 조건에 의한 선택을 할때 유용, filter 메서드는 boolean 결과를 리턴하는 람다 표현식 필요

위 코드는 람다식을 활용하여 e값이 'P'와 같은 것들끼리 모으고, e값이 'Y'와 같은 것들끼리 모아 count를 해준 뒤 두 count 개수를 비교하여 true/false를 반환한다.

참고 자료

profile
사부작 사부작

0개의 댓글