반응형
배열 (Array)
배열은 동일한 타입의 요소들이 연속적으로 저장된 자료구조입니다. 배열은 고정된 크기를 가지며, 인덱스를 사용하여 요소에 접근할 수 있습니다. 배열은 C++에서 가장 기본적인 자료구조 중 하나입니다.
배열의 특징:
- 고정된 크기: 배열의 크기는 생성 시 결정되며, 변경할 수 없습니다.
- 빠른 접근 속도: 인덱스를 사용하여 O(1) 시간 복잡도로 요소에 접근할 수 있습니다.
- 연속된 메모리 공간: 배열은 연속된 메모리 공간에 저장됩니다.
배열 예제
#include <iostream>
int main() {
// 배열 선언 및 초기화
int arr[5] = {1, 2, 3, 4, 5};
// 배열의 크기
int size = sizeof(arr) / sizeof(arr[0]);
// 배열의 요소 출력
for (int i = 0; i < size; i++) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
return 0;
}
문자열 (String)
문자열은 문자(char)의 배열로, null 문자('\0')로 끝나는 특수한 배열입니다. C++에서는 문자열을 다루기 위해 표준 라이브러리에서 제공하는 std::string
클래스를 사용합니다.
문자열의 특징:
- 가변 크기:
std::string
클래스는 동적으로 크기를 조절할 수 있습니다. - 다양한 연산 지원: 문자열 연결, 비교, 부분 문자열 추출 등의 다양한 연산을 지원합니다.
- 편리한 인터페이스: 문자열을 쉽게 다룰 수 있는 다양한 멤버 함수를 제공합니다.
문자열 예제
#include <iostream>
#include <string>
int main() {
// 문자열 선언 및 초기화
std::string str = "Hello, World!";
// 문자열의 크기
int size = str.size();
// 문자열의 요소 출력
for (int i = 0; i < size; i++) {
std::cout << "str[" << i << "] = " << str[i] << std::endl;
}
// 부분 문자열 추출
std::string substr = str.substr(7, 5);
std::cout << "부분 문자열: " << substr << std::endl;
// 문자열 연결
std::string str2 = " C++";
std::string result = str + str2;
std::cout << "문자열 연결: " << result << std::endl;
return 0;
}
배열과 문자열의 활용 예제
배열 예제: 배열의 최대값 찾기
#include <iostream>
// 배열의 최대값을 찾는 함수
int findMax(int arr[], int size) {
int maxVal = arr[0]; // 초기 최대값 설정
for (int i = 1; i < size; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i]; // 새로운 최대값 발견 시 갱신
}
}
return maxVal; // 최종 최대값 반환
}
int main() {
// 예제 배열
int arr[] = {3, 5, 7, 2, 8, -1, 4, 10, 12};
int size = sizeof(arr) / sizeof(arr[0]);
// 배열의 최대값 계산 및 출력
int maxVal = findMax(arr, size);
std::cout << "배열의 최대값: " << maxVal << std::endl; // 결과 출력
return 0;
}
문자열 예제: 문자열 뒤집기
#include <iostream>
#include <string>
// 문자열을 뒤집는 함수
std::string reverseString(const std::string& str) {
int n = str.size();
std::string reversedStr = str;
for (int i = 0; i < n / 2; i++) {
std::swap(reversedStr[i], reversedStr[n - i - 1]); // 대칭 위치의 문자 교환
}
return reversedStr; // 뒤집힌 문자열 반환
}
int main() {
// 예제 문자열
std::string str = "Hello, World!";
// 문자열 뒤집기 및 출력
std::string reversedStr = reverseString(str);
std::cout << "뒤집힌 문자열: " << reversedStr << std::endl; // 결과 출력
return 0;
}
설명
- 배열의 최대값 찾기:
- 입력: 정수 배열 ( arr )와 배열의 크기 ( size )
- 출력: 배열의 최대값
- 시간 복잡도: O(n) (배열의 모든 요소를 한 번씩 순회하기 때문)
- 문자열 뒤집기:
- 입력: 문자열 ( str )
- 출력: 뒤집힌 문자열
- 시간 복잡도: O(n) (문자열의 모든 문자를 한 번씩 순회하고 교환하기 때문)
이제 배열과 문자열의 기본 개념을 이해했습니다. 다음 단계로 넘어가며, 더 복잡한 자료구조와 알고리즘을 학습해보겠습니다.
질문이나 피드백이 있으면 언제든지 댓글로 남겨 주세요. 내일은 "Day 3: 연결 리스트 (단일, 이중, 원형)"에 대해 학습하겠습니다.
반응형
'-----ETC----- > C++로 배우는 알고리즘과 자료구조 시리즈' 카테고리의 다른 글
[C++로 배우는 알고리즘과 자료구조] Day 6: 트리의 기본 개념 (0) | 2024.08.01 |
---|---|
[C++로 배우는 알고리즘과 자료구조] Day 3: 연결 리스트 (단일, 이중, 원형) (0) | 2024.08.01 |
[C++로 배우는 알고리즘과 자료구조] Day 4: 스택과 큐 (0) | 2024.08.01 |
[C++로 배우는 알고리즘과 자료구조] Day 1: 알고리즘과 자료구조 소개 (0) | 2024.07.01 |
[C++로 배우는 알고리즘과 자료구조] 목차 (0) | 2024.06.20 |