Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료
C++ 프로그래밍Unit 6: 배열과 문자열Topic 1: 배열의 기본 개념

Topic 1: 배열의 기본 개념 🗺️

학습 목표

  • 배열의 개념과 필요성을 이해할 수 있다
  • 배열을 선언하고 초기화할 수 있다
  • 배열의 인덱싱과 메모리 구조를 파악할 수 있다

배열이 필요한 순간

학생 100명의 점수를 저장한다면?

배열 없이:

// 😱 변수 100개 선언? int score1, score2, score3, score4, score5; // ... 95개 더...

배열로 해결:

// 😎 배열로 해결! int scores[100]; // 100개의 점수를 한 번에!

배열은 같은 타입의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다.

배열 선언과 초기화

배열 선언 방법

// 기본 형태 타입 배열이름[크기]; // 예시 int numbers[5]; // 정수 5개를 저장할 배열 double prices[10]; // 실수 10개를 저장할 배열 char letters[26]; // 문자 26개를 저장할 배열

다양한 초기화 방법들

#include <iostream> using namespace std; int main() { // 방법 1: 선언 후 개별 초기화 int arr1[3]; arr1[0] = 10; arr1[1] = 20; arr1[2] = 30; // 방법 2: 선언과 동시에 초기화 int arr2[3] = {10, 20, 30}; // 방법 3: 크기 자동 계산 int arr3[] = {10, 20, 30, 40, 50}; // 크기 = 5 // 방법 4: 부분 초기화 (나머지는 0) int arr4[5] = {10, 20}; // {10, 20, 0, 0, 0} // 방법 5: 모두 0으로 초기화 int arr5[10] = {0}; // 모든 요소가 0 return 0; }

배열 인덱싱

배열의 각 요소는 **인덱스(번호)**로 접근합니다.

#include <iostream> using namespace std; int main() { int scores[5] = {85, 90, 78, 92, 88}; // 인덱스는 0부터 시작! cout << "첫 번째 점수: " << scores[0] << endl; // 85 cout << "세 번째 점수: " << scores[2] << endl; // 78 cout << "마지막 점수: " << scores[4] << endl; // 88 // 값 변경 scores[2] = 95; cout << "변경된 세 번째 점수: " << scores[2] << endl; // 95 // 배열 크기 계산 int size = sizeof(scores) / sizeof(scores[0]); cout << "배열 크기: " << size << endl; // 5 return 0; }

인덱스의 특징

  • 0부터 시작: 첫 번째 요소는 인덱스 0
  • 연속성: 인덱스는 0, 1, 2, 3… 순서로 연속
  • 범위: 크기가 n인 배열은 0 ~ n-1까지의 인덱스 사용

배열 사용 예제

#include <iostream> using namespace std; int main() { int arr[5] = {10, 20, 30, 40, 50}; cout << "=== 배열 요소 출력 ===" << endl; for(int i = 0; i < 5; i++) { cout << "arr[" << i << "] = " << arr[i] << endl; } // 배열의 특징 cout << "\n배열은 연속된 공간에 같은 타입의 데이터를 저장합니다." << endl; cout << "인덱스를 사용해 각 요소에 접근할 수 있습니다." << endl; return 0; }

배열의 구조:

인덱스: 0 1 2 3 4 값: 10 20 30 40 50

배열과 반복문

배열과 반복문은 최고의 조합입니다!

for문으로 배열 순회

#include <iostream> using namespace std; int main() { int numbers[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 배열 출력 cout << "배열 요소: "; for(int i = 0; i < 10; i++) { cout << numbers[i] << " "; } cout << endl; // 배열 합계 계산 int sum = 0; for(int i = 0; i < 10; i++) { sum += numbers[i]; } cout << "합계: " << sum << endl; // 최대값 찾기 int max = numbers[0]; for(int i = 1; i < 10; i++) { if(numbers[i] > max) { max = numbers[i]; } } cout << "최대값: " << max << endl; return 0; }

배열 값 수정하기

#include <iostream> using namespace std; int main() { int scores[] = {85, 90, 78, 92, 88}; // 배열 출력 cout << "원래 점수: "; for(int i = 0; i < 5; i++) { cout << scores[i] << " "; } cout << endl; // 모든 점수에 10점 보너스 cout << "10점씩 보너스 추가!" << endl; for(int i = 0; i < 5; i++) { scores[i] += 10; } // 수정된 배열 출력 cout << "보너스 후: "; for(int i = 0; i < 5; i++) { cout << scores[i] << " "; } cout << endl; return 0; }

배열 활용 예제

1. 배열의 합계 구하기

개념: 배열의 모든 요소를 더해서 총합을 구하는 가장 기본적인 연산입니다.

#include <iostream> using namespace std; int main() { int numbers[5] = {10, 20, 30, 40, 50}; int sum = 0; // 모든 요소를 더하기 for(int i = 0; i < 5; i++) { sum += numbers[i]; } cout << "배열의 합계: " << sum << endl; // 150 return 0; }

2. 배열에서 최대값 찾기

개념: 배열의 첫 번째 값을 기준으로 하나씩 비교하며 더 큰 값을 찾아나갑니다.

#include <iostream> using namespace std; int main() { int scores[5] = {85, 92, 78, 95, 88}; int max = scores[0]; // 첫 번째 값을 최대값으로 설정 // 나머지 값들과 비교 for(int i = 1; i < 5; i++) { if(scores[i] > max) { max = scores[i]; } } cout << "최대값: " << max << endl; // 95 return 0; }

3. 배열 뒤집기 (역순 출력)

개념: 배열의 마지막 인덱스부터 첫 번째 인덱스까지 거꾸로 접근합니다.

#include <iostream> using namespace std; int main() { int numbers[5] = {1, 2, 3, 4, 5}; cout << "정순: "; for(int i = 0; i < 5; i++) { cout << numbers[i] << " "; } cout << endl; cout << "역순: "; for(int i = 4; i >= 0; i--) { // 마지막 인덱스부터 cout << numbers[i] << " "; } cout << endl; return 0; }

배열 사용 시 주의사항

1. 배열 범위 초과 (Out of Bounds)

// ❌ 위험한 코드 int arr[5]; arr[5] = 100; // 에러! 인덱스는 0~4만 유효 arr[-1] = 50; // 에러! 음수 인덱스 불가 // ✅ 안전한 코드 int arr[5]; for(int i = 0; i < 5; i++) { // i < 5 조건 중요! arr[i] = i * 10; }

2. 배열 크기는 상수여야 함

// ❌ C++에서 불가능 (일부 컴파일러는 허용) int n; cin >> n; int arr[n]; // 에러! 가변 길이 배열 // ✅ 올바른 방법 const int SIZE = 100; int arr[SIZE]; // OK!

3. 배열 초기화 누락

// ❌ 초기화하지 않은 배열 - 쓰레기값 포함 int arr[5]; cout << arr[0] << endl; // 예측 불가능한 값 // ✅ 적절한 초기화 int arr[5] = {0}; // 모든 요소를 0으로 초기화

실습 과제

기초 실습

  1. 10개의 정수를 입력받아 배열에 저장하고, 입력된 순서의 반대로 출력하는 프로그램을 작성해보세요.
  2. 학생 5명의 점수를 입력받아 평균을 구하고, 평균보다 높은 점수의 개수를 출력하는 프로그램을 작성해보세요.

심화 실습

  1. 5개 정수 배열에서 짝수의 개수를 세는 프로그램을 작성해보세요.
  2. 배열의 모든 요소를 2배로 만드는 프로그램을 작성해보세요.

핵심 포인트

  • 배열: 같은 타입의 데이터를 연속된 메모리에 저장하는 자료구조
  • 인덱스: 0부터 시작하는 배열 요소의 번호
  • 크기: 컴파일 시점에 결정되는 고정 크기
  • 초기화: 선언과 동시에 또는 개별 요소별로 가능
  • 반복문: 배열 처리에 필수적인 도구
  • 범위 주의: 배열 크기를 벗어나는 접근 금지

다음 토픽에서는 2차원 배열과 다차원 배열에 대해 배워보겠습니다.

✅ 배열의 기본 개념 체크리스트

Last updated on