본문 바로가기

Algorithm/Programers - Java

[프로그래머스] 문자열 내 p와 y의 개수 / Stream , chars() , filter()

 

Level. 1

 

문제

 

풀이

class Solution {
    boolean solution(String s) {
        s = s.toLowerCase();
        boolean answer = true;
        int count = 0;
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == 'y') count++;
            if(s.charAt(i) == 'p') count--;
        }
        
        return count == 0 ? true : false;

    }
}

대소문자를 구문 하지 않는다는 조건이 있기 때문에 toLowerCase()를 사용하여 모두 소문자로 만들어준 후 탐색했다.

 

 


다른 사람 풀이

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

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

Java의 기본 문자 어레이를 chars()를 통해 스트림으로 변환하고, filter()를 통해 원하는 자료만 필터링하여 한줄코드로 해결했다. 

 

chars()

  • chars()는 CharSequence 인터페이스로부터 파생한 String 클래스의 새로운 메서드이다.
  • chars()는 기본적으로 IntStream을 반환하여, 문자어레이를 스트림으로 만들 때 사용할 수 있다.

Filter

  • Stream 클래스에서 제공하는 filter() 메서드
  • 스트림 요소를 순회하면서 특정 조건을 만족하는 요소로 구성된 새로운 스트림을 반환한다.
  • 스트림 내 요소에 대해서 필터링할 때 사용한다.