TIL)23.06.12(알고리즘_특정 문자 제거하기)

주민·2023년 6월 12일
0

TIL

목록 보기
16/84

프로그래머스의 특정 문자 제거하기 문제

문제

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

입출력 예

my_stringletterresult
abcdeffabcde
BCBdbeBCdbe

문제 풀기 & 해결

charAt를 사용하여 letter의 위치를 찾고 letter 외 문자를 substring으로 붙이는 방법으로 풀려했다. 그런데 두 가지 문제가 있어 포기하고

  1. letter가 문자열 끝에 있는 경우에는 "answer = a + b" a,b 둘 중 하나의 값이 없어져 오류 발생
  2. 문자열이 하나라면을 가장하고 사용한 방법이라 2개 이상이되는 경우 오류가 나거나 결과가 제대로 나오지 않음

단순하게 자바 문자열 삭제 방법을 검색하니 replaceAll(문자 교체)라는 코드가 있어 간단히 해결되었다.

1안(substring) => 오류

int val = 0;

* letter와 같은 문자의 위치를 반복문 통해 찾음
for(int i=0; i<my_string.length(); i++ ){
    if(letter.equals(my_string.charAt(i))){
        val = i;
    }
}

* letter를 제외한 앞/뒤 문자를 합침
answer = my_string.substring(0,val) + my_string.substring(val+1,my_string.length);

2안(replaceAll) => 해결!

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

알게된 점

  1. charAt : String 문자열에서 하나의 문자만 받는것
String str = "ABCD";
char cha = str.charAt(3); => D
  1. substring : 원하는 위치에 있는 문자나 문자열을 가져오는 것
String str = "ABCDEFG";

* 문자
String str2 = str.substring(4); => EFG
* 문자열 : 0의 위치부터 3 전까지의 문자를 가져옴
String str3 = str.substring(0,3); => ABC
  1. replace : 특정문자 변경, 제거 => 참고 블로그
String str = "ABCDEFG";

* 문자열 변환
replace(바꾸고 싶은 문자,바꿀문자); 
String str2 = str.replace("G","g"); => ABCDEFg
String str3 = str.replace("B",""); => ACDEFG

* 문자열에서 찾은 첫번째 문자만 변환
replaceFirst(바꾸고 싶은 문자,바꿀문자)
String str = "aaabbbsdf";

String str2 = str.replace("a","A"); => Aaabbbsdf

* replace과 유사하나 특수문자를 넣으면 다양한 결과가 나옴
replaceAll(바꾸고 싶은 문자,바꿀문자)
String str = "a.abbbs.f";

String str2 = str.replaceAll(".","0"); => a0abbbs0f";
String str2 = str.replaceAll(".","A"); => AAAAAAAAA";

String str = "1245예시";

String str3 = str.replaceAll("[0-9]","A"); => 굿"; => 굿굿굿굿예시
  1. 자바에는 다양한 코드가 있으니 생각나는 풀이가 있다면 해당 코드가 있는 지 찾아볼 것!!

0개의 댓글

관련 채용 정보