
배열
// 배열 참조 변수
// -[] 를 사용해서 배열 참조 변수를 생성
int[] ar1;
// 배열 생성
ar1 = new int[3];
//ar1 [0] [1] [2]
// | A0 |----->| 0 | 0 | 0 |
// A0
// 배열의 요소 사용 : 배열명[ index ]
// - 배열안에 하나의 요소를 사용할 때에는 index를 사용
// - index 번호는 무조건 0부터 시작 ( 임의 변경 X )
ar1[0] = 10;
ar1[1] = 20;
ar1[2] = 30;
// ar1[3] = 40; Error
System.out.println("ar1[0] : " + ar1[0]);
System.out.println("ar1[1] : " + ar1[1]);
System.out.println("ar1[2] : " + ar1[2]);
int[] ar2;
ar2 = new int[] {1,2,1,3};
//ar2 [0] [1] [2] [3]
// | B0 |----->| 1 | 2 | 1 | 3 |
// B0
System.out.println("ar2[0] : " + ar2[0]);
System.out.println("ar2[1] : " + ar2[1]);
System.out.println("ar2[2] : " + ar2[2]);
System.out.println("ar2[3] : " + ar2[3]);


// 배열은 생성과 동시에 배열안의 모든 요소가 자료형의 기본값으로 초기화 됨
int[] iarr = new int[3];
System.out.println("iarr[0] : " + iarr[0]);
System.out.println("iarr[1] : " + iarr[1]);
System.out.println("iarr[2] : " + iarr[2]);
double[] darr = new double[5];
System.out.println("darr[3] : " + darr[3]);
char[] carr = new char[10];
System.out.println("carr[5] : " + carr[5]);
System.out.println("carr[5] : " + (int)carr[5]);

int[] iar = new int[5];
iar[0] = 10;
int idx = 0;
System.out.println("iar[" + idx + "] : " + iar[idx]);
System.out.println("iar 크기 : " +iar.length);
// 배열명만 쓰면 해당 위치값만 출력
System.out.println("iar : "+ iar);
// 배열 전체 요소 접근
for(int i=0; i<iar.length;i++) {
System.out.println("iar["+i+"] : "+ iar[i]);
}

int size = 3;
int[] exA = new int[size];
System.out.println("exA 크기 : " + exA.length);
System.out.println("배열 크기 입력 > ");
Scanner sc = new Scanner(System.in);
int arrSize = sc.nextInt();
int[] arr = new int[arrSize];
System.out.println("arr 크기 : " + arr.length);
exA 크기 : 3
배열 크기 입력 >
int[] data = new int[5];
for(int i=0; i<data.length;i++) {
data[i] = i+1;
System.out.println("data[" + i + "] : " + data[i]);
}
System.out.println();
int[] sub = data;
sub[1] =7;
System.out.println("sub[1] : " +sub[1] );
System.out.println("data[1] : " +data[1] );
data[0] : 1
data[1] : 2
data[2] : 3
data[3] : 4
data[4] : 5
sub[1] : 7
data[1] : 7

Random random = new Random();
int[] value = new int[5];
// 입력
for(int i=0;i<value.length;i++) {
value[i] = random.nextInt(30)+1;
}
// 출력
System.out.println("- value array - ");
for(int i=0;i<value.length;i++) {
System.out.println("value[" + i + "] : " +value[i]);
}
// 10 ~ 20 데이터 수
int count = 0;
for(int i=0;i<value.length;i++) {
if(value[i] >= 10 && value[i] <=20) {
count++;
System.out.println(value[i]+" ");
}
}
System.out.println("10 ~ 20 사이의 데이터 수 : "+count);
// 전체의 합
int tot = 0;
for(int i=0;i<value.length;i++) {
tot += value[i];
}
System.out.println(tot);
System.out.println();
// 큰 값 찾기
int max = 0;
for(int i=1;i<value.length;i++) {
if(value[i]>value[max]) {
max = i;
}
}
System.out.println("큰 값 위치 : "+max);
System.out.println("큰 값 : "+ value[max]);
- value array -
value[0] : 29
value[1] : 9
value[2] : 14
value[3] : 28
value[4] : 26
14
10 ~ 20 사이의 데이터 수 : 1
106
큰 값 위치 : 0
큰 값 : 29
// 2차원 배열
// 행 열
int[][] ar1 = new int[2][3]; // ar1 [0] [1] [2]
// [0]행 | 0 | 0 | 0 |
// [1]행 | 0 | 0 | 0 |
ar1[1][1] = 11;
System.out.println("ar1 행의 수 : " + ar1.length);
System.out.println("ar1[0] 행 요소(열)의 수 : " + ar1[0].length);
// 전체 요소 접근
for(int i=0;i<ar1.length;i++) { // 행
System.out.print(i + " 행 : ");
for(int j=0; j<ar1[0].length;j++) { // 열
System.out.print(ar1[i][j] + " ");
}
System.out.println();
}
int[][] ar2 = new int[3][]; // 한 개의 행을 생성
ar2[0] = new int[3]; // ar2[0] 행에 3칸 짜리 배열을 생성
ar2[1] = new int[5];
ar2[2] = new int[2];
for(int i=0;i<ar2.length;i++) { // 행
System.out.print(i + " 행 : ");
for(int j=0; j<ar2[i].length;j++) { // 열
System.out.print(ar2[i][j] + " ");
}
System.out.println();
}
ar1 행의 수 : 2
ar1[0] 행 요소(열)의 수 : 3
0 행 : 0 0 0
1 행 : 0 11 0
0 행 : 0 0 0
1 행 : 0 0 0 0 0
2 행 : 0 0
// #1
// 내 코드
int[] point = new int[5];
// 위 배열을 1 ~ 20 사이의 값으로 초기화하고, 출력하는 코드를 작성하세요
// 위 배열의 전체 평균을 구하고, 평균보다 높은 데이터 수를 구하는 코드를 작성하세요
int tot = 0;
double avg = 0;
for(int i=0;i<point.length;i++) {
point[i] = r.nextInt(20) +1;
System.out.print(point[i] + " ");
tot += point[i];
}
avg = tot/(double)point.length;
System.out.println();
System.out.println("평균 : " + avg);
System.out.print("평균보다 높은 데이터 : ");
int cnt =0;
for(int i=0; i<point.length; i++) {
if(point[i] > avg) {
cnt ++;
System.out.print(point[i] + " ");
}
}
System.out.println("평균보다 높은 데이터 수 : " + cnt);
3 12 7 12 8
평균 : 8.4
평균보다 높은 데이터 : 12 12
평균보다 높은 데이터 수 : 2
// 강사님 코드
// 입력, 합
int tot = 0;
for(int i=0 ; i<point.length ; i++) {
point[i] = r.nextInt(20) + 1;
tot += point[i];
}
// 출력
for(int i=0 ; i<point.length ; i++) {
System.out.print(point[i] + " ");
}
System.out.println("합 : " + tot);
// 평균, 평균 보다 높은 데이터 수
double avg = (double)tot / point.length;
System.out.printf("평균 : %.1f\n", avg);
System.out.println("- 평균 보다 높은 데이터 -");
int avgUp = 0;
for(int i=0 ; i<point.length ; i++) {
if(point[i] > avg) {
++avgUp;
System.out.print(point[i] + " ");
}
}
System.out.println("데이터 수 : " + avgUp);
19 5 15 2 2
합 : 43
평균 : 8.6
- 평균 보다 높은 데이터 -
19 15
데이터 수 : 2
// #2
int size = 10;
int[] base = new int[size];
// base 배열의 요소를 1부터 1씩 증가시키면서 순서대로 초기화하는 코드를 작성
// 숫자 하나를 입력받고,
// base 배열의 각 요소의 값을 입력받은 수만큼 증가시키는 코드를 작성
System.out.print("base[] : ");
for(int i=0;i<size;i++) {
base[i] = i+1;
System.out.print(base[i] + " ");
}
System.out.print("숫자(n) 입력 >> ");
int num = sc.nextInt();
System.out.println("결과");
System.out.print("base[] +n : ");
for(int i=0;i<size;i++) {
base[i] += num;
System.out.print(base[i] + " ");
}
base[ ] : 1 2 3 4 5 6 7 8 9 10
숫자(n) 입력 >> 2
결과
base[ ] +n : 3 4 5 6 7 8 9 10 11 12
// #3
int[] reverse = new int[size];
// base 배열의 값을 reverse 배열에 역순으로 저장하는 코드를 작성하세요
// Ex) base : 5 6 7 8 9
// reverse : 9 8 7 6 5
System.out.print("reverse[] : ");
for(int i=0;i<size;i++) {
reverse[i] = base[size-i-1];
System.out.print(reverse[i] + " ");
}
base[] +n : 2 3 4 5 6 7 8 9 10 11
reverse[] : 11 10 9 8 7 6 5 4 3 2
// # 강사님 코드
int size = 10;
int[] base = new int[size];
// base 배열의 요소를 1부터 1씩 증가시키면서 순서대로 초기화하는 코드를 작성하세요
// 숫자 하나를 입력받고, base 배열의 각 요소의 값을 입력받은 수만큼 증가시키는 코드를 작성하세요
for (int i = 0; i < base.length; i++) {
base[i] = i + 1;
}
System.out.print("base : ");
for (int i = 0; i < base.length; i++) {
System.out.print(base[i] + " ");
}
// 증가
System.out.print("증가값 입력 > ");
int increase = sc.nextInt();
for (int i = 0; i < base.length; i++) {
base[i] += increase;
}
System.out.print("base : ");
for (int i = 0; i < base.length; i++) {
System.out.print(base[i] + " ");
}
int[] reverse = new int[size];
// base 배열의 값을 reverse 배열에 역순으로 저장하는 코드를 작성하세요
// Ex) base : 5 6 7 8 9
// reverse : 9 8 7 6 5
for (int i = 0; i < base.length; i++) {
reverse[base.length - 1 - i] = base[i];
}
System.out.print("reverse : ");
for (int i = 0; i < base.length; i++) {
System.out.print(reverse[i] + " ");
}
base : 1 2 3 4 5 6 7 8 9 10
증가값 입력 > 1
base : 2 3 4 5 6 7 8 9 10 11
reverse : 11 10 9 8 7 6 5 4 3 2
// #4 복습 필요
int range = 10;
int[] data = new int[range];
// 위 배열을 1 ~ 10 사이의 랜덤값으로 초기화하는 코드를 작성하세요
// - 중복값은 들어갈 수 없습니다
int cnt=0;
for (int i = 0; i < range; i++) {
data[i] = r.nextInt(range) + 1;
// 중복 확인 : 현재 요소의 값이 이전 요소에 있는지 확인
for (int j = 0; j < i; j++) {
if (data[j] == data[i]) {
i--;
break;
}
++cnt;
}
}
System.out.println("cnt : " + cnt);
for (int i = 0; i < range; i++) {
System.out.printf("%3d", data[i]);
}
cnt : 88
9 6 1 4 8 2 3 10 5 7
int range = 10;
int[] data = new int[range];
int[] data1 = new int[range];
System.out.println("data1[] : ");
for(int i=0; i<range;i++) {
data1[i] = i+1;
System.out.print(data1[i] + " ");
}
boolean run = true;
int cnt = 0;
while(run) {
int num = r.nextInt(10);
if(data1[num]!=0) {
data[cnt] = data1[num];
data1[num] =0;
cnt++;
}
if(cnt==10) {
run = false;
}
}
System.out.println("data[] : ");
for(int i=0; i<range;i++) {
System.out.print(data[i] +" ");
}
data1[ ] :
1 2 3 4 5 6 7 8 9 10
data[ ] :
3 9 10 6 4 7 5 1 2 8
// #5
int no=0;
int[][] mat = new int[5][5];
// 1 2 3 4 5
// 6 7 8 9 10
// 11 12 13 14 15
// 16 17 18 19 20
// 21 22 23 24 25
for(int i=0;i<mat.length;i++) {
for(int j=0; j<mat[0].length;j++) {
mat[i][j] = i*5+j+1;
System.out.printf("%3d",mat[i][j]);
if(j==4) {
}
}
}
// 강사님 코드
no = 1;
for(int i=0 ; i<5 ; i++) {
for(int j=0 ; j<5 ; j++) {
mat[i][j] = no;
++no;
}
}
for(int i=0 ; i<5 ; i++) {
for(int j=0 ; j<5 ; j++) {
System.out.printf("%3d", mat[i][j]);
}
System.out.println();
}

// #6
// 1 6 11 16 21
// 2 7 12 17 22
// 3 8 13 18 23
// 4 9 14 19 24
// 5 10 15 20 25
for(int i=0;i<mat.length;i++) {
for(int j=0; j<mat[0].length;j++) {
mat[i][j] = j*5+i+1;
System.out.printf("%3d",mat[i][j]);
if(j==4) {
}
}
}
// 강사님 코드
no = 1;
for(int i=0 ; i<5 ; i++) {
for(int j=0 ; j<5 ; j++) {
mat[j][i] = no;
++no;
}
}
for(int i=0 ; i<5 ; i++) {
for(int j=0 ; j<5 ; j++) {
System.out.printf("%3d", mat[i][j]);
}
System.out.println();
}
