[programmers] 문자열 겹쳐쓰기 - 181943

iy·2023년 12월 27일

문제 링크

구분

코딩테스트 연습 > 코딩 기초 트레이닝

문제 설명

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항
  • my_stringoverwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
  • 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ smy_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 합니다.

/*알아야 하는 개념*/
String str = "stringSTRING";
String answer1 = str.substring(6);//자릿수 6부터 끝까지 문자열 출력

String answer2 = str.substring(6,8);//자릿수 6부터 8까지 출력

나의 풀이

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        answer = my_string.substring(0,s)+overwrite_string +my_string.substring(s+overwrite_string.length());        
        return answer;
    }
}

처음에 풀었을 땐 문자열 교체한 후 나머지 문자열 생각을 못 했다..
틀린 걸 깨닫고 다시 풀어서 맞긴 했지만 가독성이 좀 떨어지는 거 같았다.

다른 분의 코드

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String before = my_string.substring(0, s);
        String after = my_string.substring(s + overwrite_string.length());
        return before + overwrite_string + after;
    }
}

이 분의 코드를 보니 교체하는 부분 앞 부분과 뒷 부분을 나눠서 훨씬 가독성있는 코드로 보였다.


👀
코딩테스트를 준비할 때 문제를 푸는 것도 중요하겠지만 왜 이렇게 풀었는지 한 눈에 보이게 하려면 조금 더 가독성 있게 코드를 짜도록 연습을 많이 해야할 거 같다.

0개의 댓글