6-2 문자열 내 p와 y의 개수

유태형·2022년 7월 10일
0

알고리즘 - Java

목록 보기
17/32

출처

해당 게시글은 [Java] 어서와! 자료구조 알고리즘은 처음이지?https://programmers.co.kr/learn/courses/13577를 간략히 요약한 게시글이며 모든 출처는 해당강의에 있습니다




문제

문제 분석

p와 y의 갯수를 구하는 문제입니다. 대소문자를 구분하지 않으며 정확한 갯수가 아니라 같은지만 구하면 됩니다. p와 y가 서로 상반되게 값을 +와 -을 하면 될거샅습니다.




풀이

나의 풀이

먼저 p와y가 아닌 문자들을 모두 제거하고 한문자씩 p인지 y인지 증감하며 갯수를 구하였습니다.


class Solution {
    boolean solution(String s) {
        //대소문자 구분X, py제외 제거
        s = s.toLowerCase().replaceAll("[^py]","");
        //갯수를 세알림
        int count = 0;
        //한 문자씩 비교
        for(int i = 0; i< s.length();i++){
            switch(s.charAt(i)){
                case 'p': //p는 +1
                    count++;
                    break;
                case 'y': //y는 -1
                    count--;
                    break;
            }
        }
        //p의 갯수와 y의 갯수가 동일한지?
        return count == 0;
    }
}

모두 소문자로 바꾼후 p와 y의 갯수를 문자열의 문자 하나씩 비교하면서 count변수를 +1와 -1를 하였습니다.



강의의 풀이

굳이 for문을 할 필요가 없습니다. 문자의 갯수를 String.length()로 구할 수 있을 것입니다.

class Solution {
    boolean solution(String s) {
        int p = s.replaceAll("[^pP]","").length(); //p의 개수
        int y = s.replaceAll("[^yY]","").length(); //y의 개수
        //p와 y의 갯수가 동일한지?
        return p == y;
    }
}

p(P)의 갯수를 해당 문자만 남겨둬서 .length()메서드로 갯수를 구하였습니다. 마찬가지로 y(Y)의 갯수도 같은 방법으로 구하였습니다.

py 변수에 각각 문자의 갯수가 저장됩니다. 같은지만 구분하는 문제이므로 p == y로 비교합니다.




GitHub

https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%5BJava%5D%20%EC%96%B4%EC%84%9C%EC%99%80%20%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%80%20%EC%B2%98%EC%9D%8C%EC%9D%B4%EC%A7%80/%ED%8C%8C%ED%8A%B86.LinearSearch/%EB%AC%B8%EC%9E%90%EC%97%B4%EB%82%B4p%EC%99%80y%EC%9D%98%EA%B0%9C%EC%88%98.java

profile
오늘도 내일도 화이팅!

0개의 댓글