게임 개발 로그

2일차 / 문자열 겹쳐 쓰기 / C++ / 기초 본문

코테

2일차 / 문자열 겹쳐 쓰기 / C++ / 기초

03:00am 2023. 11. 1. 11:35

문자열 겹쳐쓰기

문제 설명

  • 문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 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의 길이

 

입출력 예

my_string overwrite_string result
"He11oWor1d" "lloWorl"  "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"

입출력 예 설명

입출력 예 #1

예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.

입출력 예 #2

예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.

 

 


 

내 코드

    string answer = "";
    for (int i = 0; i < my_string.length(); i++) {
        if (i < s || i > overwrite_string.length() + s - 1)
            answer += my_string[i];
        else
            answer += overwrite_string[i - s];
    }
    return answer;

 

 

다른 사람 코드

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string overwrite_string, int s) {
    string answer = "";
    answer = my_string.replace(s,overwrite_string.size(),overwrite_string);
    return answer;
}
  • 문자열의 기능 replace 사용하는 방법
  • 훨씬 간단하고 직관적인 함수 사용
  • 함수 외우자

 

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string overwrite_string, int s)
{
    for (auto i = 0; i < overwrite_string.size(); ++i)
    {
        my_string[i + s] = overwrite_string[i];
    }
    return my_string;
}
  • answer 변수를 사용하지 않고 my_string 에 바로 overwrite_string 을 덮어 쓰는 방법
  • 훨씬 더 간단하게 구현할 수 있다는 강점