프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 특정 문자 제거하기(Java)

Sigfriede 2023. 3. 25. 03:54

  문제 설명

  문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return 하도록 solution 함수를 완성해주세요.

 

  제한사항

  • 1 <= my_string의 길이 <= 100
  • letter은 길이가 1인 영문자입니다.
  • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.

 

  입출력 예

my_string letter result
"abcdef" "f" "abcde"
"BCBdbe" "B" "Cdbe"
class Solution {
    public String solution(String my_string, String letter) {
        String answer = my_string.replaceAll(letter, "");
        
        return answer;
    }
}

  한 줄로 끝내본 코드가 얼마만인지. 본 문제에서는 my_string에서 문자 하나만 제거하는 것이 아닌, 모든 문자를 제거하기를 원하고 있습니다. 따라서 replaceAll을 썼지만, replace를 써도 현재 코드에서의 결과는 같습니다. 둘의 차이는 정규식의 사용 여부입니다. replaceAll의 경우에는 정규식을 사용할 수 있습니다. 

 

변수명.replace(CharSequence target, CharSequence replacement)

변수명.replaceAll(String regex, String replacement)

 

  자주 쓰는 정규식은 아래 표와 같습니다.

 

[정규식]
[0-9] 모든 숫자
[^0-9] 모든 숫자를 제외한 문자
[a-z] 영어 소문자
[A-Z] 영어 대문자

 

  엄밀히 따지면 제 코드는 정규식을 쓰지 않고 있으므로 틀렸다고도 볼 수 있겠네요. 원하는 단어는 모두 바꿔야겠다 싶어서 replaceAll을 썼는데, replace도 원하는 문자 전체를 바꿔준다는 사실을 늦게 깨달았습니다. 하지만 이번 기회에 적확한 쓰임새를 알게 되었으므로 썩 나쁜 수확은 아닌 것 같다고… 그런 식으로 위안 삼았습니다.