반응형
[프로그래머스] Java 코딩테스트 연습 - 문자열 겹쳐쓰기
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/181943
문제
문자열 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의 길이
입출력 예
입출력 예 설명
입출력 예 #1
예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl로 바꾼 "HelloWorld"를 return합니다.
입출력 예 #2
예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이 만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return합니다.
풀이
substring() 메서드를 사용해 my_string 문자열의 인덱스 0부터 s 직전까지의 문자열과 overwrite_string 문자열을 합쳤고, 그 값을 변수 answer에 저장했다. (overwrite_string 문자열이 my_string 문자열의 인덱스 0~s 이후의 문자열을 덮어쓰게됨.)
이 상태에서 answer를 return하면 예제 1번의 my_string 문자열의 길이가 overwrite_string 문자열의 길이보다 길기 때문에, "HelloWorld" 가 아닌 "HelloWorl" 이 return된다. 예제 2번만 맞추는 반쪽짜리 정답이 된다,,(my_string 문자열 사이에 overwrite_string 문자열을 끼워넣기 해야함.)
그래서 my_string 문자열의 길이가 변수 answer에 저장된 문자열의 길이보다 길다면 my_string문자열에서 answer 문자열의 길이(9) 만큼을 뺀 나머지 문자열을 answer 문자열에 더하는 if문을 추가했다.
그러면 He11oWor1d (10)의 맨 앞부터 9만큼 뺀 d가 남고 이 d가 answer 문자열에 더해진다.
그러면 HelloWorld가 된다..!
소스코드
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;
}
}
반응형
'코딩테스트연습 > [프로그래머스] Java' 카테고리의 다른 글
[프로그래머스] Java 코딩테스트 연습 - 문자 리스트를 문자열로 변환하기 (57) | 2023.06.12 |
---|---|
[프로그래머스] Java 코딩테스트 연습 - 문자열 섞기 (0) | 2023.06.04 |
[프로그래머스] Java 코딩테스트 연습 - 홀짝 구분하기 (0) | 2023.06.03 |
[프로그래머스] Java 코딩테스트 연습 - 문자열 돌리기 (0) | 2023.06.03 |
[프로그래머스] Java 코딩테스트 연습 - 문자열 붙여서 출력하기 (0) | 2023.06.03 |