문제 설명
문자열 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" |
import java.lang.StringBuilder;
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
StringBuilder sb = new StringBuilder();
sb.append(my_string.substring(0, s));
sb.append(overwrite_string);
sb.append(my_string.substring(s + overwrite_string.length()));
String answer = sb.toString();
return answer;
}
}
substring 메소드로 각 문자열을 조건에 맞게 자른 후 자른 문자열을 StringBuilder에 추가하는 방식으로 풀었습니다. 직관적인 코드이지만, 너무 단순하게 풀이한 감도 있습니다.
substring 메소드는 문자열을 원하는 길이로 자를 수 있습니다. 예를 들어 substring(0, s)는 문자열을 처음부터 s의 앞까지 자르겠다는 뜻입니다. 만약 생략하여 인자에 숫자 하나만을 입력한다면, 종료 위치를 생략하는 것입니다. 만약 숫자 n을 인자로 입력한다면 n번 인덱스에서부터 문자열 끝까지 자르겠다는 뜻입니다.
이 코드에서는 문자열의 처음부터 s - 1번(s는 포함하지 않으므로) 인덱스까지 잘라 sb에 추가합니다. 다음에는 overwrite_string을 붙입니다. 만약 overwrite_string 뒤에 my_string에서 바뀌지 않은, 남은 글자가 있다면 마저 붙여줍니다. 만약 없다면 자동으로 생략될 것입니다. 위 과정을 입출력 예 1번에 대입한다면 StringBuilder에 추가되는 문자열의 진행 단계는 아래와 같습니다.
He -> HelloWorl -> HelloWorld(입출력 예 2번에서는 생략) |
substring을 이용한 다른 문제 풀이
[프로그래머스 코딩테스트] 문자열 정렬하기(1)(Java) https://sigfriede.tistory.com/45
'프로그래머스 > Lv. 0(코딩 기초 트레이닝)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 문자열 곱하기(Java) (0) | 2023.04.27 |
---|---|
[프로그래머스 코딩테스트] 문자 리스트를 문자열로 반환하기(Java) (0) | 2023.04.27 |
[프로그래머스 코딩테스트] 홀짝 구분하기(Java) (0) | 2023.04.26 |
[프로그래머스 코딩테스트] 문자열 돌리기(Java) (0) | 2023.04.26 |
[프로그래머스 코딩테스트] 문자열 붙여서 출력하기(Java) (0) | 2023.04.26 |