본문 바로가기

Develop/Algorithm

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

반응형

✏️ 문제

: 문자열 내 p와 y의 개수

 

✏️문제 설명

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

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

 

✏️제한사항

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

✏️입출력 예

s answer
"pPoooyY" true
"Pyy" false

1) 시도 : 100점

import java.util.*;
class Solution {
    boolean solution(String s) {
        List<String> arr = Arrays.asList(s.toUpperCase().split(""));
        int num1 = arr.stream().filter("P"::equals).toArray().length;
        int num2 = arr.stream().filter("Y"::equals).toArray().length;
        return num1 == num2;
    }
}

2) 다른 사람 풀이 참조 

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

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

3) 셀프 피드백

나는 대문자로 변경한 후에, 리스트를 스트림을 생성시켜 filter로 P와 Y만 필터링하여 배열로 만든 후, length를 구해주었다. 그리고 비교하여 같으면 true를 반환시켰다. 

다른사람의 풀이를 보고 Java 8 에는 chars() 스트림을 리턴하는 메소드가 있다는 것을 알게되었다.

스트림에 대해서 더 공부 해야겠다!

 

[java] Java 8에서 String.chars ()가 int 스트림 인 이유는 무엇입니까? - 리뷰나라

Java 8 에는 문자 코드를 나타내는 s ( ) String.chars()스트림을 리턴 하는 새로운 메소드 가 있습니다. 많은 사람들이 대신 스트림을 기대할 것입니다. 이런 식으로 API를 디자인하려는 동기는 무엇입

daplus.net

 

반응형