프로그래머스/자바(JAVA)

[자바(JAVA)] 특정 문자 제거하기(replace), 문자 반복 출력하기(split, toCharArray) 편지, 모음 제거(replaceAll), 문자열안에 문자열(contains)

xlxlxl7 2023. 5. 26. 01:23
728x90

1. 특정 문자 제거하기

 

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";

        answer = my_string.replace(letter, "");

        return answer;
    }
}

 

📌 replace() 

: 문자열에서 특정 문자 또는 문자열을 다른 문자 또는 문자열로 대체하는 기능을 제공한다.

// 단일 문자 대체
String originalString = "Hello, World!";
String replacedString = originalString.replace('o', 'x');
System.out.println(replacedString);  // "Hellx, Wxrld!"

// 문자열 대체 
// target과 일치하는 모든 문자열을 변경한다.
String originalString2 = "Hello, Java!";
String replacedString2 = originalString2.replace("Java", "Python");
System.out.println(replacedString2);  // "Hello, Python!"

 

 

❌ replace() 메서드는 원본 문자열을 변경하지 않고 대체된 새로운 문자열을 반환한다.

따라서 원본 문자열을 변경하고자 한다면 StringBuilder 또는 StringBuffer를 사용하여 문자열을 조작해야 한다.

참고) https://imcodiiing.tistory.com/129

 

[프로그래머스] 자바(Java) 문자열 뒤집기 (StringBuffer, StringBuilder)

// 내 코드 class Solution { public String solution(String str) { String answer = ""; for(int i=str.length()-1; i >= 0; i--){ answer+=str.charAt(i); } return answer; } } 📌 StringBuilder() 사용 // (1)다른풀이 class Solution { public String soluti

imcodiiing.tistory.com

 

 

 

 

 

2. 문자 반복 출력하기

 

class Solution {
    public String solution(String my_string, int n) {
        String answer = "";
        
        for(int i=0; i<my_string.length();i++){
            for (int j=0; j<n; j++){
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}

 

 

 

✅ 1. 다른풀이

class Solution {
    public String solution(String my_string, int n) {
        String answer = "";
        String[] str = my_string.split("");       // 문자열을 한글자씩 분리 후 배열저장
        for(int i=0; i<my_string.length(); i++){  
            answer += str[i].repeat(n);		  	 // 반복 후 String으로 저장	
        }
        return answer;
    }
}

 

📌split () : 자바의 split() 메서드는 문자열을 특정 구분자(delimiter)를 기준으로 분리하여 문자열 배열로 반환하는 기능을 제공함.

ex) abcdef -> split("c")

> ab, def

split("") -> 모든 단어를 끊어서 배열에 저장한다.

 

 

 

 

✅ 2. 다른풀이

class Solution {
    public String solution(String my_string, int n) {
        StringBuilder sb = new StringBuilder();
        for(char c : my_string.toCharArray()){
            sb.append((c + "").repeat(n));  // c배열값 하나씩 돌리면서 반복을 함께 진행
        }
        return sb.toString();
    }
}

 

 

 

📌 toCharArray()는 자바 문자열을 문자 배열(char array)로 변환하는 메서드이다.

이 메서드는 문자열의 각 문자를 개별적인 배열 요소로 만들어 새로운 char 배열을 반환한다.

 

String originalString = "Hello";
char[] charArray = originalString.toCharArray();
for (char ch : charArray) {
    System.out.println(ch);
}

// 출력값
// H
// e
// l
// l
// o

 

 

 

3. 편지

class Solution {
    public int solution(String message) {
        int answer = message.length() * 2;
        
        return answer;
    }
}

 

 

 

4. 모음 제거

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        answer = my_string.replaceAll("[aeiouAEIOU]", "");
        return answer;
    }
}

 

 

 

📌 replaceAll() 메서드는 해당 정규 표현식에 매치되는 모든 문자를 두 번째 인자인 빈 문자열로 대체합니다.

// replaceAll 사용방법
String replacedString = originalString.replaceAll(String regex, String replacement);

// originalString: 대상이 되는 원본 문자열
// regex: 정규 표현식으로 특정 패턴을 지정
// replacement: 대체할 문자열

replaceAll() 메서드는 originalString에서 regex에 매치되는 모든 부분을 replacement로 대체한 새로운 문자열을 반환함.

replaceAll() 메서드는 정규 표현식을 사용하므로 특수 문자에 대한 이스케이프 처리가 필요할 수 있다.

ex) '.' (마침표) 문자를 대체하려면 "\."와 같이 이스케이프 문자를 사용 

 

 

 

 

5. 문자열안에 문자열

class Solution {
    public int solution(String str1, String str2) {
        int answer = str1.contains(str2)? 1: 2;
        return answer;
    }
}

📌 contains() 메서드는 문자열이 특정 부분 문자열을 포함하고 있는지를 확인하는 데 사용된다.

해당 문자열이 포함되어 있으면 true를 반환하고, 포함되어 있지 않으면 false를 반환한다.

728x90