개발자 능력치 물약/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의 경우
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;
}