inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 82. 옹알이(1)

    프로그래머스 (120956)
    Stupefyee's avatar
    Stupefyee
    Feb 12, 2025
    [JAVA 문제 풀이] 82. 옹알이(1)
    Contents
    내가 작성한 코드다른 사람의 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120956
    notion image

    내가 작성한 코드

    💡
    class Solution { public int solution(String[] babbling) { String[] words = {"aya", "ye", "woo", "ma"}; // 말할 수 있는 단어 int answer = 0; for (int i = 0; i < babbling.length; i++) { for (int j = 0; j < words.length; j++) { // 말할 수 있는 단어가 포함되어 있으면 공백으로 치환 // 공백으로 치환하는 이유 >> wyeoo와 같이 두 단어가 합쳐진 경우를 방지(ye가 사라지며 woo가 되서 정답처리 됨) if (babbling[i].contains(words[j])) { babbling[i] = babbling[i].replace(words[j], " "); } // 공백을 제외한 문자열의 길이가 0이면 정답 카운드 증가 if (babbling[i].trim().length() == 0) { answer++; break; } } } return answer; } }

    다른 사람의 코드

    💡
    class Solution { public int solution(String[] babbling) { int answer = 0; for(int i=0; i<babbling.length; i++){ if(babbling[i].matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$")){ answer++; } } return answer; } }
    정규식을 활용한 문제해결
    정규식 분석
    ^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$
    • ^ : 문자열의 시작을 의미
    • (aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))
      • aya, ye, woo, ma 중 하나와 일치하는 부분을 찾음
      • (?!aya), (?!ye), (?!woo), (?!ma)
        • 부정형 전방탐색(negative lookahead)
        • 즉, aya, ye, woo, ma가 연속해서 반복되는 것을 허용하지 않음
    • + : 위에서 찾은 패턴이 한 번 이상 반복될 수 있도록 허용
    • $ : 문자열의 끝을 의미
    Share article
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog