클릭하면 바로 문제풀이로 넘어갑니다!
문제 설명
문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
풀이
1. 문자열 my_string의
2. 인덱스 s부터 overwrite_string의 길이만큼을
3. 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
코드풀이
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
/* 인덱스의 s부터 문자열 overwrite_string 길이만큼을 추출하기 위해
substring()메소드를 사용 */
String word = my_string.substring(s,s+overwrite_string.length());
//바꾸려는 문자열을 replace()메소드를 통해 문자열overwrite_string로 변경한다.
answer = my_string.replace(word,overwrite_string);
return answer;
}
}
코드 실행 후 호기롭게 제출 후 체첨하기를 눌렀는데...!
와이라노....😢 6번 Case에서 자꾸 오류가 났다. 왜인지 찾아보니 Replace() 메소드 때문이었다.
replace()
public String replace(char oldChar, char newChar)
replace() 메소드의 경우 Char 타입의 인자를 받아 oldChar를 newChar로 변경한다.
oldChar의 모든 문자를 검색해 newChar로 변경하기 때문에 만약 바꾸려는 문자열이 my_string에 중복으로 있다면 바꾸려는 해당 문자열이 모두 문자열 overwrite_string로 변경되기 때문에 결과값이 달라진다.
ex) my_string : "aabbbbcccbbbb" / overwrite_string : "dddd" / s:2 라고 가정했을 때, 예상 결과 값 : "aaddddcccbbbb"로 출력되어야 한다.
하지만, 바꾸려는 문자열은 "bbbb"로 replace함수를 쓰게 되면 my_string의 "bbbb"도 동시에 변하게 되어 결과 값이 " aaddddcccdddd"로 출력된다. 하여 아래와 같이 변경할 문자열을 제외한 앞, 뒤의 문자열을 각각 문자열 first, last에 저장한 후 변경할 문자열과 합쳐 해결하였다.
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
//변경할 문자열을 제외한 앞부분 문자열 추출
String first = my_string.substring(0,s);
//변경할 문자열을 제외한 뒷부분 문자열 추출
String last = my_string.substring(s+overwrite_string.length(),my_string.length());
//앞부분 문자열 + 변경할 문자열 + 뒷부분 문자열로 return
answer = first + overwrite_string + last;
return answer;
}
}
다음 문제풀 때는 조금 더 꼼꼼하게 생각해야지!
문제출처
https://school.programmers.co.kr/learn/courses/30/lessons/181943#
'개발일지 > 코테 정복기' 카테고리의 다른 글
[Softeer/JAVA] 나무 심기(LV.1) (0) | 2024.06.07 |
---|---|
[프로그래머스/JAVA] 문자열 섞기 (0) | 2024.03.29 |
[프로그래머스/SQL] 조건에 부합하는 중고거래 상태 조회하기(Oracle) (0) | 2023.08.08 |
[프로그래머스/SQL] 재구매가 일어난 상품과 회원 리스트 구하기(Oracle) (0) | 2023.08.07 |
[프로그래머스/SQL] 3월에 태어난 여성 회원 목록 출력하기(Oracle) (0) | 2023.08.04 |