본문 바로가기

알고리즘, 자료구조

[프로그래머스 | 코딩 기초 트레이닝 Lv.0 | JAVA] 문자열 겹쳐쓰기

출처 - 프로그래머스

1. 문제목적

 해당 문제는 자바의 length(), substring() 메서드에 대해 알 수 있습니다.

2. 필요개념

  • length() 메서드 - 문자열(String) 객체의 길이(문자의 개수)를 정수값으로 반환하는 메서드입니다. 
  • substring() 메서드  - 문자열을 자르거나 부분 문자열(substring)을 추출하는 데 사용되는 메서드입니다. 이 메서드를 사용하면 원래 문자열에서 시작 위치부터 끝 위치까지의 문자열을 가져올 수 있습니다.
  • 예로 substring(1,5) 인덱스 1번부터 5번까지의 부분 문자열을 가져옵니다.
  • if 조건문 - 이전 문제에서 학습
  • +를 이용하여 문자열을 합칠 수 있습니다.

3. 코드작성

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

4. 문제풀이

  1. String solution(String my_string, String overwrite_string, int s): - solution 메서드는 세 개의 매개변수를 받습니다. 첫 번째는 원본 문자열(my_string), 두 번째는 덮어쓰기 문자열(overwrite_string), 세 번째는 덮어쓸 위치(s)입니다. 메서드의 반환값은 새로 생성된 문자열입니다.
  2. String answer = my_string.substring(0, s) + overwrite_string;: 원본 문자열의 처음부터 덮어쓸 위치 s까지의 부분 문자열과 덮어쓰기 문자열을 합쳐서 새로운 문자열을 만듭니다.
  3. if (my_string.length() > answer.length()) { answer += my_string.substring(answer.length()); } - 만약 덮어쓰기 이후에도 원본 문자열에 남은 부분이 있다면, 이를 새로운 문자열에 이어붙입니다. 이 부분은 덮어쓰기가 문자열을 줄이는 게 아니라 늘리는 경우를 고려한 것입니다.
  4. return answer; - 최종적으로 생성된 문자열을 반환합니다

5. 다른방법 

6. 마무리

이 코드는 문자열과 덮어쓸 위치를 입력받아 해당 문자열의 각 문자열를 변환하여 출력하는 문제였습니다. substring()메서드를 이용하여 문자열을 자르고 +연산자를 통해 문자열을 합친후 조건문을 통해 남은 문자열까지 반환 할 수 있도록 하였습니다. 

7. 문제링크

코딩테스트 연습 > 코딩기초트레이닝 > 자바 > 문자열 겹쳐쓰기

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