Algorithm Study

[Java Algorithm] 프로그래머스 Lv.0 _ 문자열 겹쳐쓰기

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

 

[Algorithm]

➡️ Java의 내장함수 substring() 사용

1. my_string의 인덱스 0부터 s까지 문자열 자르기

2. 자른 문자열 뒤에 overwrite_string 붙이기

3. my_string 의 s+1 인덱스부터 끝까지 잘라서 그 뒤로 붙이기

 

[Code]

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

 

[+ Plus]

✔️ SubString() 메소드
➡️ 문자열의 특정 부분을 잘라내는데 사용, 2가지 형태로 사용 가능

1. substring(int startIndex)
: startIndex부터 문자열의 끝까지 리턴

2. substirng(int startIndex, int endIndex)
: startIndex부터 endIndex까지 문자열 리턴
* startIndex는 포함, endIndex는 불포함

 

 

 

[+ 다른 사람 풀이]

// 초깔끔 간단 코드
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;
    }
}

// 조건문 활용 
// 조건 : my_stirng의 길이가 overwrite_string 보다 긴 경우, 그 뒤의 문자열을 더해준다
class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = my_string.substring(0,s) + overwrite_string;
        
        if(my_string.length() > answer.length()) {
            answer += my_string.substring(answer.length());
        }
        return answer;     
    }
}

 

 

 

이거 댓글 완전 나임 ... ;; 내가 쓴 줄 알았자나

처음에 문제 읽고 문자열을 문자열로 바꾼 후, for문 이중으로 돌려서 replace 함수로 문자 치환하려고 했는데 ,,

코드가 넘 드럽고 잘 써지지도 않아서 다른 방법 찾아봄 ㄷㄷ