배열의 생성
변수종류[] 변수명 = 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 |