개발자 능력치 물약/C++

프로그래머스_레벨0_문자열겹쳐쓰기

하시무 2025. 2. 23. 12:19

작성코드

#include <string>
#include <vector>

using namespace std;
//my_string의 s번째요소부터 overwrite_string으로 값을 복사하는 함수
string solution(string my_string, string overwrite_string, int s) {
    string answer = "";
    
    for(int i = s; i < overwrite_string.size(); i++){
        my_string[i] = overwrite_string[i - s];
    }
    
    answer = my_string;
    
    return answer;
}

 

실행결과

테스트1: my_string의 8번째 요소가 복사되지않았다. / 테스트 2: 값이 복사되지 않았다.

문제:

테스트 1의 경우

i = s     일때 )  'l' = 'l' 

i = s+1 일때 )  'l' = 'l'

....

i = s+6 일때 )  '1' = 'l'

 

테스트 2의 경우

overwrite_string의 값 자체를 읽지 못했다.

 

원인:

for문의 조건식을 잘못 설정했다.   

테스트 1의 경우 복사하려는 문자열의 크기는 7이다. i = s + 6 일때  i 값이 8이 되므로 조건식인  i < 7을 만족하지 않아서 반복하지 않는다. 테스트 2의 경우도 복사하려는 문자열의 크기는 7이고 i값이 7부터 시작하므로  반복하지 않는다.  

 

수정 코드

 

 

 

#include <string>
#include <vector>

using namespace std;
//my_string의 s번째요소부터 overwrite_string으로 값을 복사하는 함수
string solution(string my_string, string overwrite_string, int s) {
    string answer = "";
    
    for(int i = 0; i < overwrite_string.size(); i++){
        my_string[s + i] = overwrite_string[i];
    }
    
    answer = my_string;
    
    return answer;
}