코딩테스트/JAVA

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

할루솔이 2023. 7. 29. 19:44
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181943#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명
문자열 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_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"


입출력 예 설명
입출력 예 #1
예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.


입출력 예 #2
예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.


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

 

 

처음엔 아래 코드를 작성해서 제출했는데 6번 케이스만 오류가 났다.

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

 

왜일까 찾아보다가 테스트케이스 하나를 발견해서 넣어봤더니 여기서 오류가 났다.

replace함수를 썼더니 원하는 부분이 아닌 일치하는 부분부터 문자열을 대체하기 때문에 

오류가 났던 것!

 

다시 처음부터 코드를 작성하는게 나을 것 같아서 answer안에 한번에 넣었다.

 

substring함수를 사용해서 0부터 s까지의 문자열을 넣고

그 다음엔 overwrite_string 문자열을 넣어주고

다시 substring함수를 사용해서 남은 문자열을 넣어준다.

 

오예에에에에~~~!

 

 

 

반응형