문제 설명
문자열 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 합니다.
⭐ substring(int start, int end): start부터 end까지 자르기, end가 없으면 start부터 끝까지 자름
⭐ replace(char old, char new): old문자를 new문자로 바꾸기
문제를 읽자마자 replace() 함수를 사용해야겠다고 생각했다
근데 이 문제에서 replace()함수를 사용하려면 범위를 구해야 했다
구글링 하여 substring() 함수를 발견했다
그리고 적용해보니 샘플 케이스는 통과했다
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
String tmp = my_string.substring(s, s+overwrite_string.length());
answer = my_string.replace(tmp, overwrite_string);
return answer;
}
}
하지만!!! 6번 문제를 실패했다
왜지????
질문하기 들어가서 찾아보니 6번 문제의 반례가 my_string에 aaaaaa가 입력되고 overwrite_string에 bbb가, 그리고 s에 3이 입력되는 경우였다
나의 코드로 돌리면 bbbaaa로 실행되기 때문에 틀리게 된 것이다
그렇다면 순서를 나타내야 하는건데 순서를 어떻게 나타내지?
다른 질문들을 확인해봐도 substring() 함수를 이용해서 풀었다고 나와있는데
나도 substring() 함수를 이용했기 때문에 어떻게 해야하는지 갈피가 잡히지 않았다ㅜㅜ
결국 구글링 해보았다
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
String start = my_string.substring(0, s);
String last = my_string.substring(s+overwrite_string.length());
answer = start + overwrite_string + last;
return answer;
}
}
!!!
이렇게 쪼개는 문제였다니!!!!!!
그래도 덕분에 replace() 함수를 복습할 수 있었고, substring()함수를 학습할 수 있게 되었다!