문자열 겹쳐쓰기

이리·2024년 7월 30일
0
post-thumbnail

문제 (프로그래머스 181943번 : 문자열 겹쳐쓰기)
181943 : 문자열 겹쳐쓰기

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

문제파악

  • 넘겨진 파라미터 : 문자열 my_string, overwrite_string, 정수 s
  • my_string의 인덱스 s부터 뒷부분은 overwrite_string으로 대체

접근방법

  • my_string 문자열을 charAt을 사용해 character로 쪼개서 생각
  • 3가지 경우로 나눔 ( 1) i < s, 2) s < i < overwrite_string.length() 3) overwrite_string < i <= my_string.length()
  • for문을 언제까지 돌려야하지..? ⇒ int cnt = my_string.length();

코드구현

import java.util.*;

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        
        // 답변을 담을 리스트 선언 
        List<Character> answerB = new ArrayList<>();;
        
        // 총 for문을 도는 횟수 
        int cnt = my_string.length();
        int limit = s + overwrite_string.length();
        
        // 반복문을 돌며 answer에 character 넣기 
        for(int i = 0 ; i < cnt ; i++){
            
            // s 보다 작을때는 my_string에서 추출 
            if( i < s ){
                answerB.add(my_string.charAt(i));
                
            // s 보다 클때는 overwrite_string에서 추출 
            }else if( s <= i && i < limit){
                answerB.add(overwrite_string.charAt(i-s));
            }
            
            // 나머지가 있을경우 my_string으로 채움 
            else{
                answerB.add(my_string.charAt(i));
            }
        }
        
        // answer는 list 형태기때문에 string으로 변환 필요 
            String answerA = "";
            for(char c : answerB){
                answerA += c;
            }
        
        return answerA;
    }
}

배운점

  1. 비교적 경우의 수를 나누는 범위가 헷갈려 애를 먹었던것 같다..
    ⇒ 좀 더 쉬운 방법이 없을까 = subString(시작점, 끝점)
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;
    }
}

substring(시작점, 끝점) : 시작점 ~ 끝점 -1 까지 문자열을 잘라서 추가를 하게 된다.

  1. list를 문자열로 변환하는 방법
String answerA = "";
            for(char c : answerB){
                answerA += c;
            }

문자열 더하기를 사용하기!


나.. 너무 바보같이 풀었잖아..?

profile
Bonjour!

0개의 댓글