[프로그래머스/Java] Lv.0 문자열 겹쳐쓰기

febCho·2024년 2월 28일
0

코딩테스트

목록 보기
10/253
post-thumbnail

문제

문자열 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의 길이

풀이

- 오답

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

처음엔 substring()으로 인덱스 s 전까지를 잘라낸 다음 바꿀 문자열 overwrite_string을 결합해 answer를 반환하면 된다고 단순히 생각했다.
그런데 코드를 실행해 보니 2개의 입출력 예제 중 하나만 정답인 거다.
(* 실행한 결괏값 "HelloWorl"이 기댓값 "HelloWorld"과 다릅니다.)

그제서야 문제에 'overwrite_string의 길이만큼을'이라고 명시한 것이 눈에 띄었고
다음과 같이 코드를 변경하였다.

- 정답

문자열 overwrite_string과 my_string의 길이값을 변수에 할당할까 하다가 한 번만 쓰려고 변수를 사용하는 건 비효율적이라는 말씀이 생각나 substring()에 바로 대입했다.

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

결과

결과

profile
Done is better than perfect.

0개의 댓글