본문 바로가기

개발/코테

[JAVA] 문자열 겹쳐쓰기

[문제]

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

 

[내 풀이]

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        for (int i = 0; i < my_string.length(); i++){
            if(i>=s && i< s + overwrite_string.length()){
                answer += overwrite_string.charAt(i-s);
            }
            else{
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}

 

[에러 및 해결]

<기존 코드>

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        int k = 0;
        for (int i = 0; i < overwrite_string.length(); i++){
            k = s+i;
            my_string.charAt(k) = overwrite_string.charAt(i);
        }
        return my_string;
    }
}

- 단순히 my_string의 특정 위치들의 문자들을 대체하려고 했으나, my_string은 불변, 

--> 새로운 문자열에 문자를 대입하는 형태로 해결

 

[다른 사람 풀이]

 

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;
    }
}

-> overwrite_string이 들어갈 부분의 앞, 뒤 부분을 my_string에서 빼와서 다시 합쳐 새로운 문자열 생성

(substring()함수 이용)

str.substring(5); //str 문자열에서 index 값이 5인 위치 이후 값을 다 가져와라
str.substring(0, 3) //index 0~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);
    }
}

-> 나의 경우, 이때 char로 바꾼다는 생각을 안하고 다른 방법을 찾았던 것인데, 앞선 포스트에 작성했던 toCharArray()를 이용할 경우, String을 배열로 쪼개, 배열을 수정함으로써 문제 해결 가능

'개발 > 코테' 카테고리의 다른 글

[JAVA] 문자 리스트를 문자열로 변환하기  (0) 2024.03.26
[JAVA] 문자열 섞기  (0) 2024.03.26
[JAVA] 홀짝 구분하기  (0) 2024.03.26
[JAVA] 문자열 돌리기  (0) 2024.03.26
[JAVA] 문자열 붙여서 출력하기  (0) 2024.03.26