본문 바로가기
알고리즘/프로그래머스

[프로그래머스 / 옹알이(2) / JAVA]

by KDW999 2023. 1. 27.

https://school.programmers.co.kr/learn/courses/30/lessons/133499#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 접근

 

접근한 방법들이 경우의 수가 너무 많거나 잘 떠오르지 않아서 집단 지성의 힘을 빌렸다.

연속 문자는 할 수 없다 했으니 조건문에서 걸러주고

문자열에서 아기가 옹알이 할 수 있는 문자열 일부분을 " "의 공백으로 대체해주면서 인덱스의 길이가 0이 되면 카운팅 해주는 방식이다.

처음엔 풀이를 보고 왜 문자열을 꼭 " "으로 대체하고 마지막에 " "을 ""으로 대체하는지 의문이 들었다.

공백을 넣어서 대체해주지 않으니 실패가 떴었고 찾아보니 반례가 있더라

"woayao"

해당 문자열의 경우 공백을 넣어주지 않으면 aya가 사라지고 난 뒤 woo도 사라져서 카운팅 됐었다.

 

import java.util.*;

class Solution {

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

		for (int i = 0; i < babbling.length; i++) {

			if (babbling[i].contains("ayaaya") ||  // 연속 문자 거르기
				babbling[i].contains("yeye") || 
				babbling[i].contains("woowoo") || 
				babbling[i].contains("mama")) continue;
			
			babbling[i] = babbling[i].replace("aya", " ");
			babbling[i] = babbling[i].replace("ye", " ");
			babbling[i] = babbling[i].replace("woo", " ");
			babbling[i] = babbling[i].replace("ma", " ");
			babbling[i] = babbling[i].replace(" ", "");

			if(babbling[i].length() == 0) answer ++;
		}
		System.out.println(answer);

		return answer;
	}
}

 

 

댓글