문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요.
예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
문제 유형
- 반복된 문자열 합치기
의사코드
- 반환할 문자열 변수(result)를 선언한다.
- 문자열의 메모리 크기를 한 번에 할당한다.
- [반복문] n보다 작을 때까지 반복한다.
- 인덱스를 나누어 짝수이면 resul에 "수"를 추가한다.
- 그렇지 않다면 result에 "박"을 추가한다.
- 결과값(result)을 반환한다.
코드 작성
#include <string>
using namespace std;
string solution(int n) {
string result;
result.reserve(n);
for (int i = 0; i < n; i++)
{
result += (i % 2 == 0) ? "수" : "박";
}
return result;
}
배운 점
- std::string의 +연산자는 두 문자열을 합칠 수 있으나 크기가 부족할 경우 재할당 및 복사비용이 발생한다.
- std::string의 resever를 함수를 통해 한 번에 메모리 공간을 할당하여 복사비용을 방지한다.
'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] 약수의 개수와 덧셈 (1) | 2024.12.17 |
|---|---|
| [Algorithm] 내적 (0) | 2024.12.16 |
| [Algorithm] 가운데 글자 가져오기 (1) | 2024.12.14 |
| [Algorithm] 나누어 떨어지는 숫자 배열 (0) | 2024.12.14 |
| [Algorithm] 서울에서 김서방 찾기 (0) | 2024.12.14 |