코딩테스트연습/[프로그래머스] Java

[프로그래머스] Java 코딩테스트 연습 - 문자열 겹쳐쓰기

_꼬마돌 2023. 6. 3. 17:30
반응형

[프로그래머스] Java 코딩테스트 연습 - 문자열 겹쳐쓰기

문제 출처

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의 길이

 

입출력 예

입출력 예 설명

입출력 예 #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;     
    }
}

 

반응형