문제풀이/프로그래머스

[Java 자바] 프로그래머스 level.0 문자열 겹쳐쓰기

꼬ㄴi 2023. 7. 12. 19:50

문제 설명

문자열 my_string, overwrite_string 과 정수 s 가 주어집니다.

문자열 my_string 의 인덱스 s 부터 overwrite_string 의 길이만큼을 문자열 overwrite_string 으로 바꾼 문자열을 return 하는 solution 함수를 작성하기

 

제한사항

  • my_string overwrite_string 은 숫자와 알파벳으로 이루어져 있음
  • 1 ≤ overwrite_string 의 길이 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ s my_string의 길이 -  overwrite_string 의 길이

 

입출력 예시

my_striing overwrite_string s
"He11oWor1d" "lloWorl" 2
"Program29b8UYP" "merS123" 7

예시 #1

예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"

이를 "lloWorld" 로 바꾼 "HelloWorld" 를 return

예시 #2

예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"

여길 "merS123"로 바꾼 "ProgrammerS123"를 return


import java.lang.String;

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        
        int ow_len = overwrite_string.length();
        int ms_len = my_string.length();
        
        answer = my_string.substring(0,s) + overwrite_string + my_string.substring(s+ow_len,ms_len);
        
        return answer;
    }
}

문자열이 대체되는 처음과 끝을 기준으로 my_string을 자르고 그 사이에 overwrite_string을 붙여넣으면 되겠구나 싶었음  substring(  ) 쓰려고😗

substring(  ) 메소드를 쓸 때 형식이 2가지가 있는데 난 그 중에서 처음 인덱스와 끝 인덱스를 인자로 넣어서 문자열을 잘라내는 방법을 사용했다.

public String substring(int 처음 인덱스, int 끝 인덱스) 의 형식임

 

1) 먼저 두 문자열의 길이를 각각 구해놈

2)

answer = ①my_string.substring(0,s) + ②overwrite_string + ③my_string.substring(s+ow_len,ms_len);

 

① 문자열이 대체되는 처음이 인덱스 s니까 인덱스 0~s까지 my_string문자열을 잘라냄

② 0~s 까지의 문자열 + overwrite_string

③ overwrite_string이 끝나는 부분의 인덱스 ~ my_string 마지막 인덱스까지 문자열을 잘라내서 붙여줌

    이 때 substring(  )의 인자로 들어가는

    처음 인덱스 = s + overwrite_string 문자열의 길이

    끝 인덱스 = my_string 문자열의 길이

    로 구했음