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