티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/12916

 

코딩테스트 연습 - 문자열 내 p와 y의 개수

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

programmers.co.kr

 

[문제 풀이]

 

1. 대소문자에 관계 없이 p와 y의 개수를 구한다.

2. 문자열을 split을 이용해서 배열로 만들어도 되지만, toCharArray()를 이용하여 배열을 만들 수 있다.

3. 주어진 문자가 p이면 p의 개수를 증가시키고 y이면 y의 개수를 증가시킨다.

4. p와 y의 개수가 같으면 true, 다르면 false를 반환한다.

 

[소스 코드]

 

public class NumbersOfPAndYInString {
    public static void main(String[] args) {
        String s = "PYyp";

        System.out.println(solution(s));
    }

    private static boolean solution(String s) {
        int p = 0;
        int y = 0;

        for (char c : s.toLowerCase().toCharArray()) {
            if (c == 'p') p++;
            if (c == 'y') y++;
        }

        return p == y;
    }
}

 

// stream

public class NumbersOfPAndYInString {
    public static void main(String[] args) {
        String s = "PYyp";

        System.out.println(solution(s));
    }

    private static boolean solution(String s) {
        String str = s.toLowerCase();
        
        return countCharacters(str, 'p') == countCharacters(str, 'y');
    }

    private static long countCharacters(String s, char c) {
        return s.chars().filter(value -> value == c).count();
    }
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함