옹알이 (2) (자바)

김재현·2023년 11월 29일
0

알고리즘 풀이

목록 보기
37/89
post-thumbnail

문제

처음에 문제 이해가 좀 힘들었다.

정답 코드

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;

        for (String s : babbling) {
            if (s.contains("ayaaya") || s.contains("yeye") || s.contains("woowoo") || s.contains("mama")) {
                continue;
            } else {
                if (s.contains("aya")) s = s.replace("aya", " ");
                if (s.contains("ye")) s = s.replace("ye", " ");
                if (s.contains("woo")) s = s.replace("woo", " ");
                if (s.contains("ma")) s = s.replace("ma", " ");
                if (s.contains(" ")) s = s.replace(" ", "");
                if (s.length() == 0) {
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

이건 풀지 못했다!
도대체 단어를 포함하는걸 어떻게 인식시켜야 할까... 메서드를 새로 만들어서 그곳에서 char 단위로 작업해야할까 고민했다.

  • 결국 다른 사람 풀이를 봤는데, contains와 replace라는 아주 근사한 메서드가 있었다.
    contains로 발음 가능한 문자열이 있는지 확인하고, replace로 그 문자열을 바꿔주는 것이다.

  • 그리고 바꿔준 문자열을 활용해서 이것이 발음할 수 있는 단어인지 판별하면 된다.

주의 할 사항은 빈문자열 ""이 아닌 " " 공백(또는 다른 것)으로 replace 해야한다.
이유는 공백으로 처리했을 경우 앞의 단어와 연결되어 또 다른 문자로 변경될 수 있기 때문이다.
ex) "yayae" : 이런 경우 바로 비어 있는 것으로 바꿔버리면 단어로 인식. 이런 것을 방지하기 위해 " " 했다가 ""으로 바꾸는 것.

contains, replace 메서드가 있는줄 내가 알았겠는가!
오늘은 자바의 메서드를 쭉 한번 봐보기라도 해야겠다.

다른 사람 풀이

    public int solution(String[] babbling) {
        int answer = 0;
        for(int i=0; i<babbling.length; i++){
            babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama","1");
            babbling[i] = babbling[i].replaceAll("aya|ye|woo|ma"," ");
            babbling[i] = babbling[i].replaceAll(" ","");
            if(babbling[i].equals("")) answer++;
        }
        return answer;
    }

|| 는 많이 보고 써왔다. 하지만 | 는 존재하는건 알았지만 사용하기엔 생소하기에 찾아봤다.

  • | (비트 OR 연산자):
    이 연산자는 정수형 데이터의 각 비트에 대해 OR(논리합)을 수행합니다.
    예를 들어, a | b는 a와 b의 각 비트에 대해 OR 연산을 수행합니다.

  • || (논리 OR 연산자):
    이 연산자는 논리적인 OR(논리합)를 나타냅니다.
    예를 들어, x || y는 x 또는 y 중 하나가 true이면 전체가 true가 됩니다.

profile
I live in Seoul, Korea, Handsome

0개의 댓글