CODING TEST/programmers

Day2 - 문자열 겹쳐쓰기

iamyuunzo 2025. 7. 9. 10:25

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 문자열 겹쳐쓰기

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181943

 

 

📌 문제 요약

핵심 조건: 문자열 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 = "";

        String front = my_string.substring(0, s);
        String middle = overwrite_string;
        String back = my_string.substring(s + overwrite_string.length());

        answer = front + middle + back;

        return answer;

        }
}

- 문법 모르겠어서 힌트 받아서 품. (substring으로 앞(front) + 덮어쓰기(middle) + 뒤(back)로 나눠서 이어붙임.)

- public String solution : 채점 프로그램 함수.. 

 

 

📌 다른 사람들 풀이

// 1
String before = my_string.substring(0, s);
String after = my_string.substring(s + overwrite_string.length());
return before + overwrite_string + after;


// 2
char[] my_chars = my_string.toCharArray();
char[] overwrite_chars = overwrite_string.toCharArray();
for (int i=0; i<overwrite_chars.length; i++) {
    my_chars[s + i] = overwrite_chars[i];
}
return String.valueOf(my_chars);


// 3
if(my_string.length() > answer.length()) {
   answer += my_string.substring(answer.length());
}

<-- 다른 풀이 요약 -->

- 1 : 내 코드랑 그냥 같음. middle 변수를 따로 안 쓰고 그냥 overwrite_string에 직접 붙임.

- 2 : substring 없이 → 문자 배열로 직접 덮어쓰기 (String은 불변이라 못 바꾸니까 char[]로 바꿔 배열 원소 교체)

- 3 : substring 이어붙임의 보조 단계 (answer에 before+overwrite_string만 먼저 붙여두고, 아직 붙이지 않은 뒤쪽이 있으면 substring으로 이어붙임.) => 덮어쓰기 길이를 따로 계산하지 않고 answer 길이로 비교. (이 풀이가 가장 많았음.)



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** substring **

- 문자열의 일부(부분 문자열) 를 잘라서 새 문자열을 만드는 메서드

- substring(begin, end)는 begin부터 end 미만까지 잘라서 새 문자열 리턴함.

- substring(begin) : begin부터 끝까지, beginIndex : 0 이상이어야 함.

- endIndex는 beginIndex 이상이어야하고, 문자열 길이보다 커지면 안 됨.

// 자바 String 클래스에 있는 기본 문법
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)

// 예시
String s = "abcdefg";

System.out.println(s.substring(2));    // "cdefg"
System.out.println(s.substring(2, 5)); // "cde"
System.out.println(s.substring(0, 1)); // "a"
System.out.println(s.substring(s.length() - 2)); // 끝 2글자: "fg"