Array

ZiSoOm·2021년 5월 27일
0

기초자바

목록 보기
8/15

📏배열

  • 여러개의 값을 하나의 변수에 저장해서 사용하는 것
  • 참조형 타입임
  • 인덱스로 값을 구분함(번호를 붙여서 구분)
  • 길이를 변경할 수 없음(처음 만들 때 몇 개 값을 저장할지에 대한 길이를 정함)
  • 배열을 저장한 변수에는 주소가 있고, 그 주소를 따라가보면 실제 배열이 있음

변수 = 주소(100번지)
{0,0,0,0,0}
100번지, 101번지, ...104번지

  • 배열의 값들은 연속으로 저장되고 주소는 첫번째에 저장함
  • 인덱스 (변수명[]) : 0부터 시작함

📏배열 변수 초기화방법

  • int[] array; //배열을 저장할 수 있는 변수가 됨 (int array[]도 사용가능, 보통 타입 옆에 [] 붙임)
  • array = new int[5]; //[5]배열의 크기, 길이, 저장할 값의 갯수(int타입의 변수 5개를 저장할 수 있는 공간이 만들어지고, 주소가 저장됨)
    이때 5개의 기본값(int의 기본값 : 0)이 들어가져있음
  • array = new int[]{1, 2, 3, 4, 5}; //실제 넣어주고 싶은 값을 넣어주면서 초기화됨, 5개의 값이 저장되어 있으므로 길이는 5가됨
  • int[] array2 = {1, 2, 3, 4, 5}; // new int[] 생략하고 사용가능함(단, 반드시 선언과 초기화를 동시에 해줘야함. 초기화만 따로 할 수 없음
    ex) int[] array2를 미리 선언하고, array2 = {1, 2}; 사용할 수 없음)

📏배열에 값 저장하기

int[] array = new int[5];
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;

배열은 for문과 함께 자주 사용함

//array.length : 배열의 길이
for(int i=0; i <array.length; i++) {
	System.out.print(array[i] + " "); //10 20 30 40 50
}

for(int i=0; i <array.length; i++) {
	array[i] = (i+1)* 10;
	System.out.print(array[i]+" "); //10 20 30 40 50
}

📏배열 연습

  • 10개의 정수를 저장할 수 있는 배열을 선언 및 초기화 해주세요
int[] arr = new int[10];
  • 배열의 모든 인덱스에 1~100 사이의 랜덤한 값을 저장해주세요
for(int i=0; i < arr.length; i++) {
	arr[i] = (int)(Math.random() * 100) +1;
	System.out.print(arr[i] + " ");
}
  • 배열에 저장된 모든 값의 합계와 평균을 출력해 주세요
int sum=0;
for(int i=0; i<arr.length; i++) {
	sum += arr[i];
}
double avg = (double)sum / arr.length;
System.out.println("합계 : " + sum + "평균 : " + avg);
  • 값이 뒤죽박죽 나오게 섞기
//길이가 10인 배열 만들기
int[] shuffle = new int[10];

//1~10까지 담아주기
for(int i=0; i<shuffle.length; i++) {
	shuffle[i] = i + 1; 
}
System.out.println(Arrays.toString(shuffle));

//배열 값 섞기
for(int i=0; i<shuffle.length; i++) {
	int rnd= (int)(Math.random() * shuffle.length); //0~9 까지 랜덤 발생시킴
	int tmp = shuffle[i]; // shuffle[0]으로 해줄 수 있음
	shuffle[i] = shuffle[rnd]; //랜덤으로 나온 숫자를 인덱스로 사용
	shuffle[rnd] = tmp;
}
System.out.println(Arrays.toString(shuffle));
  • 1~10사이의 랜덤값을 500번 생성하고, 각 숫자가 생성된 횟수를 출력해주세요
int[] counts = new int[10];

for(int i =0; i < 500; i++) { //500번
	int rnd = (int)(Math.random() * 10) + 1;
/*	if(rnd == 1) { //랜덤 숫자가 1이 나오면 counts[0]번자리를 ++해줘야 함
		counts[0]++;
	}*/
	counts[rnd-1]++;
}
System.out.println(Arrays.toString(counts));
  • 거스름돈 동전 갯수 구하기
//거스름돈 동전 갯수		
int money = (int)(Math.random() * 500) *10;
int[] coin = {500, 100, 50, 10};
System.out.println("거스름돈 : " + money);

for(int i=0; i < coin.length; i++) {
	int cnt = money / coin [i]; //갯수
	money %= coin[i];
	System.out.println(coin[i]+"원: "+ cnt + "개");	
}
  • 그래프 그리기
int[] gra = new int[20];
for(int i=0; i <gra.length; i++) {
	gra[i] = (int)(Math.random() * 5) + 1;
}
System.out.println(Arrays.toString(gra));

//1~5 사이의 숫자가 발생된 만큼 *을 사용해 그래프를 그려주세요
/*[4,3,2,1,1,1,4,4,5,5,3,5,2,3,1,2,3,1,2,4]
	 1:*****5
	 2:****4
	 3:****4
	 4:****4
	 5:***3
*/

int[] counts = new int[5]; //1, 2, 3, 4, 5 나온 갯수 담을 변수
for(int i=0; i < gra.length; i++) {
	counts[gra[i]-1]++; // ex) gra[i] = 1이 나오면 counts[0]의 갯수를 늘려줌
}
for(int i=0; i < counts.length; i++) {
	System.out.print(i+1 + " : ");
	for(int j=0; j < counts[i]; j++ ) {
		System.out.print("*");
	}
	System.out.println(counts[i]);
}
  • 중복되지 않은 배열 구하기
int[]arr = new int[10];
for(int i=0; i < arr.length; i++) {
	arr[i] = (int)(Math.random()*5)+1;
}
System.out.println(Arrays.toString(arr));

/*
 * 1~5사이의 랜덤한 값이 10개에 저장된 배열에서 중복된 값이 제거된 배열을 만들어 주세요.
 * [4,2,1,2,5,1,4,4,2,1]
 * [4,2,1,5]
 */

int[] tmp = new int[5];
int cnt = 0;
for(int i=0; i < arr.length; i++) {
	boolean flag = true;
	for(int j=0; j < tmp.length; j++) {
		if(arr[i] == tmp[j]) {
			flag = false;
		}
	}
	if(flag) {
		tmp[cnt++] = arr[i];
	}
}
int[] result = new int[cnt];
for(int i=0; i < result.length; i++) {
	result[i] = tmp[i];
}
System.out.println(Arrays.toString(result));

📏최소값, 최대값 구하기

배열에 저장된 값들 중 최소값과 최대값을 출력해 주세요

//첫번째 방법
int min = arr[0];
int max = arr[0];

for(int i=0; i<arr.length; i++) {
	if(arr[i]< min) {
		min = arr[i];
	}
	if(max < arr[i]) {
		max = arr[i];
	}
}
System.out.println(Arrays.toString(arr));
System.out.println("min :" + min + ", max: " + max);

//두번째 방법
for(int i=0; i<arr.length; i++) {
	for(int j=0; j<arr.length-1; j++) {
		if(arr[j]> arr[j+1]) {
			int t = arr[j];
			arr[j] = arr[j+1];
			arr[j+1]=t;
		}
	}
}
System.out.println("min: " + arr[0] + ", max :" + arr[arr.length-1]);

0개의 댓글

관련 채용 정보