** 이 글을 읽음에 앞서 포스팅 된 소스가 100% 정답은 아님을 밝힙니다.
더욱 유능한 분께서 클린 / 최적의 소스를 짜셨을 가능성이 높습니다.
기록용으로 남기며, 참고만 부탁드립니다.
** 백준 알고리즘은 직접 풀이를 해보시는 것을 권장합니다.
● 문제
난이도[티어] : LEVEL 0
프로그래머스 옹알이(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120956
● 풀이 방법
해당 문제는 사실 정규표현식(Regex)를 쓰면은 되게 단순하게 나올 수 있다.
그러나 아직 정규표현식에 관해서 미흡하기에 우선적으로는 다른 방식으로 풀이를 진행했다.
● 소스 코드
class Solution {
public int solution(String[] babbling) {
int cnt = 0;
for(String str : babbling){
str = str.replaceFirst("aya","-");
str = str.replaceFirst("ye","-");
str = str.replaceFirst("woo","-");
str = str.replaceFirst("ma","-");
str = str.replace("-","");
if(str.isEmpty())
cnt++;
}
return cnt;
}
}
이 문제를 해결하기 위해 replace 방식을 통하여 해결하였다. 그러나 유의해야 할 점이 있다.
"aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다.
라는 문구를 보자. 일반적인 replace방식을 사용하게 되면은 하나의 발음을 여러번 사용하게 될 수도 있다. 그렇기에 우리는 한번만 사용하도록 제어해야한다. 그렇기에 replaceFirst를 사용하였다.
우선적으로 발음할 수 있는 단어를 '-'로 처리하였으며, 마지막으로 '-'를 모두 삭제하였다.
해당 문자열이 모두 비어 있다면은 할 수 있는 4개의 발음을 사용하여 발음내기를 성공했다는 의미로 볼 수 있으며,
이를 통해 발음할 수 있는 단어의 개수를 셈하였다.
사용한 메서드
str.replace( strA, strB);
public String replace(String strA, String strB)
참조 : https://www.w3schools.com/java/ref_string_replace.asp
str.replaceFirst( strA, strB );
public String replaceFirst(String substring, String replacement);
참조 : https://www.codecademy.com/resources/docs/java/strings/replaceFirst
● 결과
'프로그래머스 > JAVA11' 카테고리의 다른 글
[프로그래머스 | JAVA ] LV. 2 : 타겟 넘버 (0) | 2024.07.24 |
---|---|
[프로그래머스 | JAVA ] LV. 2 : JadenCase 문자열 만들기 (0) | 2024.07.22 |
[프로그래머스 | JAVA ] LV. 2 : 최댓값과 최솟값 (0) | 2024.07.21 |
[프로그래머스 | JAVA ] LV. 1 : 부족한 금액 계산하기 (0) | 2024.07.17 |
[프로그래머스 | JAVA ] LV. 2 : 올바른 괄호 (0) | 2024.07.12 |