[프로그래머스_입문] 특정 문자 제거하기

LU·2024년 9월 27일
0
post-thumbnail

문제

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

제한사항

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

입출력 예

my_stringletterresult
"abcdef""f""abcde"
"BCBdbe""B""Cdbe"

입출력 예 설명

입출력 예 #1

  • "abcdef" 에서 "f"를 제거한 "abcde"를 return합니다.

입출력 예 #2

  • "BCBdbe" 에서 "B"를 모두 제거한 "Cdbe"를 return합니다.

풀이 1

class Solution {
    public String solution(String my_string, String letter) {
        // char.At(0)을 사용해서 letter를 뺴기
        // 그렇다면 for문을 이용해서 letter를 빼야하는게 맞는것인가. 
        // -> for문을 사용하려는 이유 : my_string에 있는 문자열을 알기 위해서
        StringBuilder sb = new StringBuilder();
        
        for(int i = 0; i < my_string.length(); i++){
            if(my_string.charAt(i) != letter.charAt(0)) {
                sb.append(my_string.charAt(i));
            }
        }
        return sb.toString();
    }
}

풀이 2

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";
        
        answer = my_string.replace(letter, "");
        return answer;
    }
}

🌀여기서 잠깐🌀

String

  • 불변객체
  • 문자열에 +연산을 하는 경우, 기존 문자열을 수정하지 않고, 새문자열을 생성해서 반환한다.
  • 문자열 더하기 연산이 많은 경우, 성능이 떨어진다.

StringBuilder

  • 가변객체
  • 내부의 문자열값을 추가/수정/삭제가 가능하다 (문자열 값 저장소를 참조하지 않는다)
  • equals/hashCode 오버라이드가 되어있지 않다 (객체기준으로 처리된다)

StringBuffer

  • StringBuilder와 동일한 기능을 제공한다.
  • 멀티쓰레드 환경에서 쓰레드간 동기화(쓰레드 접근 순서를 저장) 기능을 지원한다.
  • 싱글쓰레드 환경에서는 StringBuilder가 성능이 우수하다.
profile
기록은 나의 무기😎

0개의 댓글