본문 바로가기

국비교육/국비교육

day7 - 0801

배열의 생성

변수종류[] 변수명 = new 변수종류[크기];

- 자료형 : int, double 등의 자료형 입력

- 변수명 : 변수 이름 입력

- 크기 : 배열의 크기 설정

 

1) 배열만 생성 (배열의 크기만 아는 경우)

int[] array = new array[5];

- 크기 5인 배열 생성

 

2) 배열에 생성 후 값을 대입 (배열의 데이터를 아는 경우)

int[] array = new array[] {50, 30, 10, 20, 40};

- 배열 생성 후 정수형 데이터 50, 30, 10, 20, 40을 대입

 

 

day07_array_Test01 : 배열의 필요성 (변수의 문제점)

day07_array_Test02 : 배열의 생성

 

배열의 인덱스

int[] score = new int[] {55, 75, 80, 65, 99};

- 배열의 인덱스는 0부터 (배열의 크기 - 1)까지

- 배열명.length : 배열의 크기를 반환

- 배열의 특정 인덱스에 저장된 값 호출시 : array[i]

 

반복문과 배열

반복문을 이용한 배열내 값의 총합과 평균

int[] array = new array[] {50, 40, 10, 20, 30};

int sum;
for(int i = 0 ; i < array.length ; i++) {
	sum += array[i];
}

int avg = sum / array.length;

- 총합을 나타내는 변수 sum에 i번째 배열의 값 array[i]를 더하여 대입하는 과정을 반복한다 (배열의 길이만큼)

- 평균을 나타내는 변수 avg는 최종적으로 변수 sum에 저장된 값을 배열의 길이로 나눈다

- 평균을 소수점까지 표기하기 위해 자료형을 실수(double, float)로 하거나 배열의 길이를 나눌 때 실수로 직접 입력 (5.0)

 

반복문을 이용한 배열내 등수 카운트

int[] array = new array[] {50, 40, 10, 20, 30};

int meScore = array[3];
int meRank = 1;

for(int i = 0 ; i < array.length ; i++) {
	if(array[i] > meScore) {
		meRank ++;
	}
}

1) 등수를 카운트하기 위한 값(int meScore = array[3];)을 선언하고 등수를 1등으로 가정한다(int meRank = 1;)

2) 만약 i번째 배열의 값 array[i]가 meScore보다 높다면 meRank를 +1 한다 (나보다 점수가 높으면 내 등수를 뒤로 미룬다)

3) 배열내 모든 값과 비교하여 meRank의 최종값이 array[3]의 등수가 된다

** 등호를 넣지 말아야 하는 이유

    반복문을 이용하는 과정 중

    자기 자신과의 비교도 포함되어 있기 때문에 '크거나 같다(>=)'를 하게 되면 등수가 한칸 더 밀려서 나오게 된다

    만약 '크거나 같다(>=)'로 하기 위해서는 meRank의 초기값을 0으로 해야 한다 

 

반복문을 이용한 배열의 출력 

for(int i = 0 ; i < score.length ; i++) {
	System.out.println(score[i]);
}

- 배열명.length : 배열의 길이 (여기서는 5)

 

 

day07_array_Test03 : 배열 + 반복문 (1)

day07_array_Test04 : 배열 + 반복문 (2)

day07_array_Test05 : 반복문을 이용한 배열의 합계, 평균, 등수

 

배열의 활용 - 배열내 값 중 최대, 최소 구하기

float[] array = new array[] {70f, 55f, 60f, 85f, 75f};

float max = array[0];

for(int i = 0 ; i < array.length ; i ++){
	if(max < array[i]) {
		max = array[i];
	}
}

1) 최대값을 저장하는 변수 max를 만든다

2) 배열의 0번째 값을 최대값(max)이라고 가정한다 (float max = array[0];)

3) 배열의 0번부터 끝까지 크기를 비교한다

4) 만약 i번째 배열의 값이 max에 저장된 값보다 크다면 그 값을 max에 대입한다 (max = array[i];)

5) 최종적으로 max에 저장된 값이 배열의 최대값이 된다

 

 

day07_array_Test06 : 배열의 최대, 최소

day07_array_Test07 : 신장 정보를 입력하고 평균, 최소, 평균에 가장 가까운 신장 출력

 

배열의 데이터 교체 (swap)

- 배열내 값을 바꿀 때 맞교환은 할 수 없다 (오직 덮어쓰기만 가능)

- 덮어쓰기 전 데이터를 임시저장하기 위해 변수 공간을 새로 만든다(backup)

int[] array = new array[] {30, 10, 20, 50, 40};

int backup = array[1];
array[1] = array[3];
array[3] = backup;

- 배열 내 저장된 값 중 10과 50의 위치를 바꾼다고 할 때

  1) array[1]을 backup에 저장한다

  2) array[1]에 array[3]의 값을 덮어쓰기 한다

  3) array[3]에 backup에 저장된 값을 덮어쓰기 한다

 

 

day07_array_Test08 : 데이터 교체(swap)

 

 

day07_array_Test09 : 숫자 5개를 입력받아 배열 생성 후 배열, 총합, 평균 출력

day07_array_Test10 : 숫자를 입력받아 배열 생성 후 메뉴를 입력하면 랜덤 추첨

 

day07_array_Test11 : 배열 뒤집기

 

day07_array_Test12 : 선택 정렬 (Selection Sort)

day07_array_Test13 : 버블 정렬 (Bubble Sort)

day08_array_Test14 : 삽입 정렬 (Insertion Sort)

'국비교육 > 국비교육' 카테고리의 다른 글

day9 - 0803  (0) 2022.08.04
day8 - 0802  (0) 2022.08.04
Day6 - 0730  (0) 2022.08.01
day5 - 0729  (0) 2022.07.29
day4 - 0728  (0) 2022.07.28