[Java]프로그래머스_문자열겹쳐쓰기

728x90

1) 문제설명

2) 해결방법

맨 처음에 이문제를 무슨 말인지 이해하기 까지 조금 시간이 걸렸습니다. 문제가 길고 뭔가가 복잡해보여서 

문제만 3,4,번 읽어보았습니다. 

기본적으로 이 문제를 풀기 위해서는 저는 subString() 메서드를 알아야한다고 생각했습니다.

subString() => 문자열을 특정 부분을 잘라주는 함수이다

출력할때도 subString(2,4) -> 인덱스2,3부분을 출력해주거나, 중간 문자를 교체 할 수 있습니다.

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
    	//my_string -> 기존 문자열 , overwrite_string -> my_string에서 바꿀 문자, n몇번째까지 바꿀것인지
        
        // 결과를 저장할 변수 answer를 만들어두고, int s를 넣어 어디부터 이어붙일지 정한다
        // 기존 문자열 0부터 s-1까지의  부분과 overwrite_string을 이어붙인다.
        String answer = my_string.substring(0, s) + overwrite_string;
		
        // 만약 기존 문자열의 길이가 이어붙인 문자열보다 크다면
        // 나머지 부분을 이어붙인다. 
        // overwrite_string 은 붙이는 것 이므로 my_string보다 길 수 없다.
        if (my_string.length() > answer.length()) {
            answer += my_string.substring(answer.length());
        }

        // answer에 누적된 값을 반환한다.
        return answer;
    }
}

3) 결과

subString() 메서드 개념을 모르면 풀 수 없는 문제였습니다

 

저도 풀다가 잘 몰라서 subString개념을 검색해보면서 풀었습니다. 

 

초보자인 저한테는 조금 어려운 문제였던거 같습니다..

 

이 문제는 A4용지에 글로 쓰거나 그림을 그려가면서, 풀어보면 비교적 쉽게 이해를 할 수 있을것 같습니다

 

<다른사람풀이>

---> 젤 간결하고 좋은 코드라고 생각합니다.

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;
    }
}
728x90