본문 바로가기

공부/자료구조 | 알고리즘

[자료구조] 배열 / 배열을 이용한 연도 및 분기별 통계 예제

반응형
배열
  • 가장 기본적인 자료구조
  • 같은 데이터 유형을 가진 자료들의 그룹/세트
  • 연속된 기억장소를 배정받음
  • 배열명 : 전체를 대표하는 명칭
  • 원소 : 배열에 소속된 각 자료를 일컫는 용어
  • 인덱스 : 각 원소의 위치를 나타내는 숫자
  • 배열의 선언과 사용

    • 자료형 배열이름 [ 원소개수 ] () int score[6]; 
    • 원소를 지칭할 때, score[0],…. score[5] 라고 사용

 

1차원 배열
  • 1차원 배열의 선언

    • 자료형 배열명 [ 원소개수 ]
    • Int score[6], char answer[20], double data[12];
  • 배열 값의 초기화

    • 배열 원소들은 초기화하지 않으면 임의의 값을 가짐 (예외 있음)
    • 자료형 배열명 [ 원소개수 ] = { 초기값 리스트 }

 

2차원 배열 
  • 2차원 배열의 선언

    • 자료형 배열명 [ 원소개수1 ] [원소개수2]
    • 자료형 배열명 [ ] []
    • 전체 원소개수는 (* )
    • int A[3][4], int scores[2][3], double matrix[4][4];
  • 행 우선과 열 우선

    • 행 우선 : 행 단위로 자료를 처리 (열 인덱스를 우선 처리)
    • 열 우선 : 열 단위로 자료를 처리 (행 인덱스를 우선 처리)
    • int sale[2][3]의 경우, 원소 순서 
    • 일반적으로 행 우선 방식을 주로 사용함
  • 2차원 배열의 초기화

    • 자료형 배열명 [m][n] = {{리스트1},{리스트2},…,{리스트m}}

 

다차원 배열
  • 3차원 배열

    • 자료형 배열명 [m][n][p]
    • ) int A[4][2][2]
  • n차원 배열로 확장 가능
  • n차원 배열의 초기화
  • n차원 배열의 순서(행 우선)

    • ) A[0][0][0], A[0][0][1], A[0][1][0], A[0][1][1],
            A[1][0][0], A[1][0][1], A[1][1][0], A[1][1][1],
            A[2][0][0], A[2][0][1], A[2][1][0], A[2][1][1],
            A[3][0][0], A[3][0][1], A[3][1][0], A[3][1][1] ...

 

예제) 연/분기별 통계
- 다음은 L 전자 공릉 대리점의 매출 영업 실적이다.
- 각 연도별 총 매출 총액을 구하시오.
- 최근 3년간의 분기별 평균 매출액을 구하시오.

  1분기 2분기 3분기 4분기
2012년 6,000,000 6,500,000 6,200,000 7,000,000
2013년 7,000,000 6,500,000 7,500,000 8,000,000
2014년 8,000,000 8,500,000 9,000,000 11,000,000

 

#include <iostream>
using namespace std;

const int YEAR = 3;
const int PERIOD = 4;

void main()
{
	int sales[YEAR][PERIOD] = { { 600, 650, 620, 700 },{ 700, 650, 750,800 },{ 800,850,900,1100 } };

	//년도별 매출액 계산
	for (int year = 0; year < YEAR; year++) {
		int sum = 0;
		for (int period = 0; period < PERIOD; period++)
			//sum = sum + sales[year][period];
			sum += sales[year][period];
		cout << "YEAR " << year << " 매출 결과 = " << sum << endl;
	}

	//분기별 평균 매출액
	for (int period = 0; period < PERIOD; period++) {
		double average;
		int sum = 0;
		for (int year = 0; year < YEAR; year++)
			sum += sales[year][period];
		average = (double)sum / YEAR;

		cout << "PERIOD " << period << " 매출 평균액 = " << average << endl;
	}
}

 

 

 

반응형