옹알이
문제 설명
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 15
- babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
- 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예
babbling | result |
["aya", "yee", "u", "maa", "wyeoo"] | 1 |
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
입출력 예 설명
입출력 예 #1
["aya", "yee", "u", "maa", "wyeoo"]에서 발음할 수 있는 것은 "aya"뿐입니다. 따라서 1을 return합니다.
입출력 예 #2
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]에서 발음할 수 있는 것은 "aya" + "ye" = "ayaye", "ye", "ye" + "ma" + "woo" = "yemawoo"로 3개입니다. 따라서 3을 return합니다.
유의 사항
네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.
코드
class Solution {
public int solution(String[] babbling) {
int answer = 0;
return answer;
}
}
풀이
class Solution {
// solution : 메소드의 이름
// String[] babbling : 매게변수
// String[] : 문자열의 배열
// babbling : 배열의 이름
public int solution(String[] babbling) {
// 정수타입 answer 변수 0으로 값을 초기화
int answer = 0;
// for : babbling 배열의 모든 요소를 각 문자열을 string 변수에 할당
// (String string : babbling) : 배열의 각 요소를 순회
// 각 반복마다 babbling 배열의 현재 요소를 string 변수에 할당
// string : 반복문 내에서 사용할 변수의 이름
for (String string : babbling) {
// string 변수에 저장된 값을 콘솔에 출력, 그 후에 새로운 줄로 이동
System.out.println(string);
// string.replaceAll(x, y) : 문자열 내에서 x를 찾아 모두 y로 대체
// 모든 옹알이 및 공백을 공백으로 대체
// 공백(" ")과 빈문자열("")은 다름
string = string.replaceAll("aya", " ");
string = string.replaceAll("ye", " ");
string = string.replaceAll("woo", " ");
string = string.replaceAll("ma", " ");
string = string.replaceAll(" ", ""); \
// string.length(): String클래스 length() 메소드
// -> 문자열의 길이를 반환
// 문자열의 길이는 문자열을 구성하는 문자들의 개수
// ==0 : 문자열의 길이가 0인지 확인
// answer 변수 : 어떤 특정한 조건을 만족하는 요소의 수를 셈
// string 변수가 빈 문자열이라면 answer 변수의 값을 1 증가 시킴
if (string.length() == 0) {
answer++;
}
}
return answer;
}
}
- answer 변수를 0으로 초기화 시켜 유효한 단어의 개수를 셈
- for 루프를 사용하여 babbling 배열의 각 문자열을 string 변수로 하나씩 순회
- System.out.println(string); 으로 현재 처리 중인 문자열 콘솔에 출력
- replaceAll 메소드를 사용하여 각 발음에 해당하는 문자열을 공백으로 대체
- 모든 발음이 공백으로 교체된 후 string = string.replaceAll을 사용하여 문자열에서 모든 공백 제거
- 모든 발음을 제거한 후 string의 길이가 0 -> 입력된 문자열이 주어진 발음들로만 구성
- answer 1 증가
- 모든 문자열을 처리한 후 answer에 저장한 값인 유효한 단어의 총 개수를 반환
https://school.programmers.co.kr/learn/courses/30/lessons/120956