Java /day07 / 23.08.31(목) / (핀테크) Spring 및 Ai 기반 핀테크 프로젝트 구축

허니몬·2023년 8월 31일
post-thumbnail

P06_array


ArrayEx01

배열

  • 한번의 선언으로 같은 타입의 데이터 공간을 메모리에 연속적으로 생성
// 배열 참조 변수
// -[] 를 사용해서 배열 참조 변수를 생성
		
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]);	


ArrayEx02

// 배열은 생성과 동시에 배열안의 모든 요소가 자료형의 기본값으로 초기화 됨
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]);


ArrayEx03

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]);
}


ArrayEx04

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

배열 크기 입력 >


ArrayEx05

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


ArrayEx06

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


ArrayEx07

// 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


QuizArray


// #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();
}


profile
Fintech

0개의 댓글