[코딩테스트]프로그래머스_문자열 겹쳐쓰기

쟈니·2023년 6월 30일
0

코딩테스트 연습 - 문자열 겹쳐쓰기

  • 내가 쓴 풀이(94.6으로 통과 실패)

class replaceTest {
    public static String replaceTest(String my_string, String overwrite_string, int s){
        String answer = "";
        int a = my_string.length() - overwrite_string.length();
        int last_id= a-s;
        if(last_id<0){
            answer = my_string.substring(s,overwrite_string.length()+a);
            my_string = my_string.replace(answer, overwrite_string);
        }
        else {
            answer = my_string.substring(s,overwrite_string.length()+s);
            my_string = my_string.replace(answer, overwrite_string);
        }
        answer = my_string;
        System.out.println(answer);
        return answer;
    }
    public static void main(String[] args){
        replaceTest("He11oWor1d", "lloWorl",2);
        replaceTest("Program29b8UYP", "merS123", 7);
        replaceTest("sujin123", "kim",5);
    }

}

  • 다른 사람의 풀이
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;
    }
}

접근 방식

주어진 s는 첫번째 인덱스가 아니다. 대체할 overwrite_string이 my_string의 s번째 인덱스부터 마지막 인덱스까지의 부분 문자열과 크기가 같지 않을 수 있다.
1. my_string과 overwrite_string의 길이 차를 구한다.-> int a
2. 마지막 인덱스 번호를 알기 위해 a와 s의 차를 구한다. ->int last_id

후기

String.substring으로 문자열의 인덱스 사용

  • 내 문제가 테스트 6을 통과하지 못했는데 이유는 모르겠다..ㅠㅠ
  • 다른 분의 풀이를 참고하니 내가 문제를 너무 효율적으로 작성하지 못했다는 것을 알게 되었다.
    나는 대체될 부분을 제외한 나머지 부분을 그대로 붙이기 위해 문자열의 차를 이용하였는데, 위 풀이는 s와 overwrite_string의 길이를 더하여 나머지 부분을 구현하였다.
  • 프로그래머스가 작성한 초안을 그대로 쓸 필요는 없다!

풀이 참고

다른 사람의 풀이

profile
시작은 미미하나 끝은 쥬쥬하다.

0개의 댓글