Everyday Dev System

문자열 겹쳐쓰기 문제 - 개선 본문

have to/자바 알고리즘

문자열 겹쳐쓰기 문제 - 개선

chaeyoung- 2023. 10. 24. 12:24

 

 

30분 고민해서 나온 코드와 이에 따른 개선 후의 코드이다.

 

해당 문제 풀 때의 나의 문제점 : 시간이 많이 소요됨. 코드가 길다

 

 

 

1. 개선 전 코드

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = my_string.substring(0,s);
        
        int arr1_length = my_string.length();
        int arr2_length = overwrite_string.length();
        
        for(int j=0; j<overwrite_string.length(); j++){
            answer += overwrite_string.charAt(j);
        }
        
        int sub_length = arr1_length - arr2_length - s;
        if(sub_length>0){
            for(int i=s+arr2_length; i<arr1_length; i++){
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}

 

 

 

개선 사항

▶ 코드 줄이기.

 

1. String을 for문 합치지 않고, + 연산자로 변경.

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = my_string.substring(0,s) + overwrite_string;
        
        int arr1_length = my_string.length();
        int arr2_length = overwrite_string.length();
        
        int sub_length = arr1_length - arr2_length - s;
        if(sub_length>0){
            for(int i=s+arr2_length; i<arr1_length; i++){
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}

 

2. substring() 함수로만 작성하기.

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = my_string.substring(0,s) //0번 인덱스 부터 s-1번 인덱스까지
            + overwrite_string
            + my_string.substring(s+overwrite_string.length());
        return answer;
    }
}

 

 

 

 

references: https://school.programmers.co.kr/learn/courses/30/lessons/181943

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr