컴퓨터/프로그래머스

[Java] 프로그래머스 코딩테스트 연습 / 문자열 겹쳐쓰기

peridott 2026. 1. 19. 15:18

문제


정답

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

개념설명

1. 클래스 선언

class Solution {

✔️ 의미

  • Solution이라는 클래스 정의

 

2. 메서드 선언

public String solution(String my_string, String overwrite_string, int s) {

✔️ 의미

  • 문자열을 처리해서 문자열을 반환하는 메서드
부분 의미
public 외부에서 호출 가능
String 반환 타입 (문자열)
solution 메서드 이름
String my_string 원본 문자열
String overwrite_string 덮어 쓸 문자열
int s 덮어쓰기 시작 인덱스

 

3. 반환용 변수 선언

String answer = "";

✔️ 의미

  • 최종 결과 문자열을 담을 변수
  • 처음에는 빈 문자열로 초기화

 

4. 앞부분 문자열 자르기

String answerForward = my_string.substring(0, s);

✔️ 의미

  • my_string의 앞부분을 잘라서 작성

✔️ substring(beginIndex, endIndex) 설명

substring(시작인덱스, 끝인덱스)
  • 시작 인덱스 : 포함
  • 끝 인덱스 : 미포함

 

5. 뒷 부분 문자열 자르기

String answerBackward = my_string.substring(
	s + overwrite_string.length(),
    my_string.length()
);

✔️ 의미

  • 덮어 쓴 이후의 남은 문자열 부분을 잘라냄

 

6. overwrite_wtring.length()

overwrite_string.length()

✔️ 의미

  • 덮어 쓸 문자열의 길이 반환

✔️ 예시

overwrite_string = "ABC";
overwrite_string.length() → 3

 

7. 왜 s + overwrite_string.length() 인가?

✔️ 이유

  • s부터 덮어쓰는 만큼은 제거해야 하기 때문

 

8. my_string.length()

my_string.length()

✔️ 의미

  • 문자열 전체 길이 반환
  • 마지막 인덱스 + 1

 

9. 문자열 합치기

answer = answerForward + overwrite_string + answerBackward;

✔️ 의미

  • 앞부분 + 덮어쓸 문자열 + 뒷부분
  • 문자열 + → 문자열 연결

✔️ 이 줄을 풀어서 쓰면

answer = 
	(앞부분)
    + (덮어쓴 문자열)
    + (뒷부분);

 

10. 결과 반환

return answer;

✔️ 의미

  • 완성된 문자열을 호출한 곳으로 반환

🔚 전체 실행 흐름 요약

  1. 원본 문자열에서 앞부분 자르기
  2. 덮어쓴 부분 제외하고 뒷부분 자르기
  3. 앞 + 덮어쓰기 문자열 + 뒤 합치기
  4. 결과 반환

💡 핵심 포인트 정리

문법 의미
substring(a, b) 문자열 자르기
length() 문자열 길이
+ 문자열 연결
return 값 반환

⚠️ 주의사항

❌ 잘못된 경우

substring(s + overwrite_string.length())
  • 이렇게 쓰면 끝 인덱스 초과 위험

✔️ 항상 범위를 정확히 계산해야 함