Develop

[프로그래머스] 문자열 겹쳐쓰기 본문

개인 공부/프로그래머스

[프로그래머스] 문자열 겹쳐쓰기

개발 기록 2024. 1. 10. 16:25

문제

 

내 풀이

 

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
//        answer = my_string.replace(my_string.substring(s,overwrite_string.length()+s),overwrite_string);
//        System.out.println(answer);
        answer = my_string.substring(0,s) + overwrite_string + my_string.substring(overwrite_string.length()+s);
        return answer;
    }
}

 

느낀점

 

처음에는 replace를 사용하여 풀려고 했으나 테스트6번에서 계속 오류가 났고

replace가 바꾸려는 문자와 같은 문자가 여러개 있으면 여러번 바꾼다는 특성을 알고 코드를 바꿨다

 

replace로 푼 코드는 주석처리하고 substring만 사용하여 문자열을 이어붙였다. 

 

 

참고할 replace 내용

- String replace(char oldChar, char newChar)
  문자열내에 있는 모든 oldChar를 newChar로 바꾼 문자열을 반환한다
 
- String replace(CharSequence target, CharSequence replacement)
  문자열내에 있는 모든 target 문자열을 replacement문자열로 바꾼 문자열을 반환한다
 
- String replaceAll(String regex, String replacement)
  문자열내에 있는 정규식 regex와 매치되는 모든 문자열을 replacement문자열로 바꾼 문자열을 반환한다
 
- String replaceFirst(String regex, String replacement)
  문자열내에 있는 정규식 regex와 매치되는 첫번째 문자열을 replacement 문자열로 바꾼 문자열을 반환한다

 

 

다른 풀이1

 

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String before = my_string.substring(0, s);
        String after = my_string.substring(s + overwrite_string.length());
        return before + overwrite_string + after;
    }
}

 

느낀점

 

바로 더해서 return하는 방법이 있네

 

변수명도 주어진 것이 아니라 before과 after로 바꿔서 사용하여

어떤 내용인지 알아보기 쉽다

 

다른 풀이2

 

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        char[] my_chars = my_string.toCharArray();
        char[] overwrite_chars = overwrite_string.toCharArray();
        for (int i=0; i<overwrite_chars.length; i++) {
            my_chars[s + i] = overwrite_chars[i];
        }
        return String.valueOf(my_chars);
    }
}

 

 

느낀점

 

이렇게 배열로 만들어서 해당 위치에 원하는 값을 넣는 방법도 있네

코드를 보면 알지만 이렇게 막상 사용하는 것은 쉽지않다..