[프로그래머스] 133499번 - 옹알이 (2) [Java]

2026. 6. 5. 12:31·프로그래머스
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 


 

 

문제

 

 

제출한 코드

1. 문자 비교

import java.util.List;
import java.util.ArrayList;

class Solution {
    public int solution(String[] babbling) {
        
        int count = 0;
        
        List<String> list = new ArrayList<>();
        list.add("aya"); list.add("ye"); list.add("woo"); list.add("ma");
        
        for (String s : babbling) {
            StringBuilder sb = new StringBuilder();
            String last = "last";
            
            for (char c : s.toCharArray()) {
                sb.append(c);
                
                if (list.contains(sb.toString())) {
                    if (sb.toString().equals(last)) break;
                    
                    last = sb.toString();
                    sb.delete(0, sb.length());
                }
            }
            
            if (sb.length() == 0) count++;
        }
        
        return count;
    }
}

2. 정규식 사용

class Solution {
    public int solution(String[] babbling) {
        
        int count = 0;
        
        for (String s : babbling) {
            s = s.replaceAll("ayaaya|yeye|woowoo|mama", "1");
            s = s.replaceAll("aya|ye|woo|ma", "");
            
            if (s.length() == 0) count++;
        }
        
        return count;
    }
}

 

 

풀이

1번 코드는 제일 처음에 제출한 코드이다.

리스트 안에 네 가지 발음을 넣고, for문을 통해 글자 하나씩 비교하면서 StringBuilder에 append 한 후, 만약 StringBuilder에 있는 문자열이 list 안에 존재한다면, StringBuilder 내용을 지우는 방식으로 하여, 마지막에 sb의 길이가 0이라면 count를 1 증가하는 방식으로 구현했었다.

 

제출한 후 다른 사람의 코드를 살펴 보았더니 정규식으로 간결하게 해결한 코드가 있었다.

replaceAll() 를 사용해서 간단하게 풀 수도 있었다.

 

연속된 발음이 s에 있다면 1로 치환한 후,

해당 발음이 s에 남아 있다면 빈 문자("")로 치환하도록 했다.

이후 s의 길이가 0이라면 발음이 가능한 문자열이므로 count에 1을 증가시켰다.

'프로그래머스' 카테고리의 다른 글

[프로그래머스] 42862번 - 체육복 [Java]  (0) 2026.06.09
[프로그래머스] 131128번 - 숫자 짝꿍 [Java]  (0) 2026.06.08
[프로그래머스] 77484번 - 로또의 최고 순위와 최저 순위 [Java]  (0) 2026.06.04
[프로그래머스] 136798번 - 기사단원의 무기 [Java]  (0) 2026.06.02
[프로그래머스] 159994번 - 카드 뭉치 [Java]  (0) 2026.05.22
'프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 42862번 - 체육복 [Java]
  • [프로그래머스] 131128번 - 숫자 짝꿍 [Java]
  • [프로그래머스] 77484번 - 로또의 최고 순위와 최저 순위 [Java]
  • [프로그래머스] 136798번 - 기사단원의 무기 [Java]
이서라다
이서라다
  • 이서라다
    개발일지
    이서라다
  • 전체
    오늘
    어제
    • 전체 보기 (79)
      • 내일배움캠프 (21)
        • TIL (21)
      • 프로그래머스 (23)
      • Algorithm (2)
      • BackEnd (0)
        • Spring (0)
      • Language (4)
        • JAVA (4)
      • Git (2)
      • 백준 - Java (25)
        • 입출력과 사칙연산 (6)
        • 반복문 (8)
        • 1차원 배열 (1)
        • 문자열 (7)
        • 2차원 배열 (1)
        • 조합론 (1)
        • 정렬 (1)
      • IDE (1)
        • IntelliJ (1)
      • 티스토리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    내일배움캠프
    jdk삭제
    티스토리스킨
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이서라다
[프로그래머스] 133499번 - 옹알이 (2) [Java]
상단으로

티스토리툴바