말하는 컴공감자의 텃밭

프로그래머스 옹알이 <13점> - 자바 (java) replace, replaceAll 본문

알고리즘/Programmers - Java

프로그래머스 옹알이 <13점> - 자바 (java) replace, replaceAll

현콩 2023. 4. 30. 18:38
728x90

자바 응애 응애..

머쓱이가 얼마나 잘 옹알이하는지 알아봅시다.

응애응애

 

응애응애 옹알이(1)

프로그래머스 옹알이

먼저 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.

오켕~ "ayaye" 같은것도 aya + ye 라서 가능하군요. 하나하나 지워줘야 겠네요. replace()를 사용합니다.

 

replace() 메서드는 

String str = "Hello World!";

str = str.replace("Hello", "Hi");

System.out.println(str; // Output: "Hi World!"

예시처럼 바꿀 "Hello" 를 넣으면 "Hi"로 바뀌는 메서드에요

 

그럼 replace를 사용해서 발음할 수 있는 문자가 나오면 치환하고, 나중에 치환한 문자를 또 없애준 후 ++하면 되겠네요.

예를 들어 치환할때 "가능" 으로 바꾼다면, "ayaye" 의 경우 "aya" -> 가능 "가능ye", -> "가능가능" 이 되겠네요.

마지막에 "가능"을 ""로 바꾸고 비교해서 ""라면 answer ++

 

가봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
            
        for(int i = 0; i<babbling.length; i++){
            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] == ""){
                answer++;
            }
        }
        
        return answer;
    }
}
cs

따란.

 

응애응애 옹알이(2)

프로그래머스 옹알이

비슷한 문제입니다. 다만 연속 발음을 못하네요.

이번에는 replaceAll()을 사용해보려합니다. replaceAll()은 replace()와 다르게 정규식이 가능합니다.

 

String str = "The cat in the hat";

String replaced = str.replaceAll("at", "og");

System.out.println(replaced);

>>The cog in the hog

at가 들어가는 하위 문자열이 모두 바뀐 모습.

 

String input = "Hello, World! This is a test.";
String output = input.replaceAll("[^a-zA-Z0-9]", "");
System.out.println(output);

>>HelloWorldThisisatest

처럼 알파벳과 0~9이 아닌 경우 지우는 예시입니다. [ ] 안에 ^가 !처럼 NOT을 의미합니다
 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        for (int i = 0; i < babbling.length; i++) {
            babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama"" ");
            babbling[i] = babbling[i].replaceAll("aya|ye|woo|ma""");
            if (babbling[i].equals("")) {
                answer++;
            }
        }
        return answer;
    }
}
 
cs

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        for (int i = 0; i < babbling.length; i++) {
            babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama", " "); // 두번 반복하는 경우를 제외시키기 위해 

// 띄어쓰기로 구분해 주어야 합니다.
            babbling[i] = babbling[i].replaceAll("aya|ye|woo|ma", "");                       // 가능한 발음 처리
            if (babbling[i].equals("")) { 
                answer++;
            }
        }
        return answer;
    }
}

 

정리

  •  replace() -> 문자열을 바꿀 때 사용.
  • ex) String str = "banana is good "
  • str.replace("banana", "apple") -> "apple is good"
  •  replaceAll() -> 문자열을 바꿀 때 사용. 정규식, 패턴 가능
  • str.replaceAll("a+n", "pp") -> "bppa is good"

 

13점 달다.. 옹알옹알

프로그래머스 옹알이

728x90
Comments