2023.04.11

Jay Ji·2023년 4월 10일
0
post-thumbnail

Problem

class Solution {
    public String solution(String my_string, String letter) {
        char[] chars = my_string.toCharArray();
        char l = letter.charAt(0);

        for(int i =0; i < chars.length; i++){
            if(chars[i] == l){
                 ?????????
            }
        }
        return answer;
    }
}

문자열 my_string에서 letter를 제거한 문자열을 return하는 solution 구축

What I tried

나의 전략은 아래와 같았다:

  1. my_string을 char 형태로 변환
  2. for문을 사용하여 char 형태의 my_string을 letter와 비교
  3. if문을 사용하여 char 형태의 my_string과 l이 같다면 my_string에서 해당 letter 빼기

What was Wrong?

문제는 char 형태의 my_string과 l이 같은지까지 비교는 가능하였으나, 그 후 어떻게 작성해야할 지 몰라서 여러 코드를 넣어봤지만 계속 원하는 값이 나오지 않았다. 내가 머리속에서 계속 생각한것은 my_string - l 이였는데 이것을 구현하는게 너무 어려웠다.

What I Learned

class Solution {
    public String solution(String my_string, String letter) {
        char[] chars = my_string.toCharArray();
        char l = letter.charAt(0);

        for(int i =0; i < chars.length; i++){
            if(chars[i] == l){
                chars[i] = ' '; // replace the letter with a space
            }
        }
        String answer = new String(chars).replaceAll(" ", ""); // convert the modified char array to a string and remove the space
        return answer;
    }
}

구글링을 통하여 replace라는 method를 알게되었고, 적용하여 문제점을 풀 수 있었다.
먼저 char 형태의 my_string과 l이 같은지까지 비교 후 char[i]의 값을 ' '으로 주고
replaceAll을 사용하여 space를 제거해줌.

이번 알고리즘 문제를 풀며 아래와 같이 몇가지를 배울 수 있었다:

  1. String 문자열을 char로 바꾸기 위해서는 아래와 같이 할 수 있다.
    char[] chars = my_string.toCharArray(); - array인 경우 .toCharArray 추가 필요
    char l = letter.charAt(0); - charAt(0) = letter와 동일
  2. replace() 혹은 replaceAll() method에 대해 배웠다.
    replace()는 char에서 사용이 가능하고, 첫번째 매개변수는 변환하고자 하는 대상이 될 문자열, 두번째 매개변수는 변환할 문자 값이다
    replaceAll()은 String에서 사용이 가능하고, 대상 문자열을 원하는 문자값으로 변환하는 함수이다. 첫번째 매개변수는 변환하고자 하는 대상이 될 문자열이고 두번째 매개변수는 변환할 문자 값이다.
  3. 마지막으로 replaceAll()을 사용하여 아래와 같이 간단하게 해당 문제를 끝낼 수도 있었다.
class Solution {
    public String solution(String my_string, String letter) {
        String answer = my_string.replaceAll(letter, "");
        return answer;
    }
}

딥빡.

profile
Think out of the Box

0개의 댓글