본문 바로가기
개발자/백엔드 웹 개발자 과정(국비)

2022년 11월 15일 _ 10회차(배열복습, 2차원 배열 )

by 초응 2022. 11. 15.

Day10_01. 사용자로부터 5개의 점수를 입력받아 입력받은 점수를 우선 출력하고,
입력받은 점수를 내림차순 정렬하여 다시 출력 

 

내림차순 :(selection sort)선택정렬

1. 주 대상자와 비교대상자가 존재한다.

2. 주 대상자는 처음부터 비교대상자는 주 대상자의 다음부터 시작

3. 비교대상자가 마지막에 도달하면 주대상자가 그 다음으로 이동한다. 

package dya10;
import java.io.*;
public class Day10_01 {
	public static void main(String[] args) 
	throws IOException{
		
		/*사용자로부터 5개의 점수를 입력받아 입력받은 점수를 우선 출력하고,
		입력받은 점수를 내림차순 정렬하여 다시 출력 
		내림 차순 : 정렬 알고리즘*/
		
		BufferedReader br = 
		new BufferedReader(new InputStreamReader(System.in));
		
		int arr[] = new int[5];
		
		for(int i=0;i<arr.length;i++) {
			System.out.print("점수"+(i+1)+":");
			arr[i] = Integer.parseInt(br.readLine());
		}
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}
		
		System.out.println();
		System.out.println("----------------------------");
		
		
		for(int i=0;i<arr.length-1;i++) {//주 대상자를 담당할 for문
			for(int j=i+1;j<arr.length;j++) {//비교대상자를 담당할  for문
				if(arr[i]<arr[j]) {
					int temp =arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}
	}
}

2차원 배열

1. 2차원 배열 선언

자료형 배열명[][];

 

2. 2차원 배열 메모리 생성

배열명 =new 자료형[행][열];

 

3. 2차원 배열 초기화하기

배열명 [행][열] = 값;

 

1차원 배열 : 기본 데이터를 담을 수 있는 1차원 배열의 주소.

2차원 배열 : 주소 정보를 가지고 있는 1차원 배열의 주소.

2차원 이상의 배열은 1차원 배열의 확장이다.

 

선언시 사용하는 [ ] 위치의 의미

1. int []i,j,k; = 모두 1차원 배열

2. int i[],j; = i는 1차원 배열, j는 변수

3. int []i[],j; = i는 2차원 배열, j는 1차원 배열

4. int i[][],j; = i는 2차원 배열, j는 변수

5.int []i[],j[]; = i,j 모두 2차원 배열

 

 

 

 

package day10;

public class Day10_02 {
	public static void main(String[]args) {
		
		int arr[][];
		arr = new int[3][2];
		
		arr[0][0] = 10;
		arr[0][1]=20;
//		arr[0][2]=30;// 범위 초과
		arr[1][0] = 40;
		
		System.out.println("arr[0][0]:"+arr[0][0]);
		System.out.println("arr[0][1]:"+arr[0][1]);
//		System.out.println("arr[0][2]:"+arr[0][2]);
		System.out.println("arr[1][0]:"+arr[1][0]);
		System.out.println("arr[1][1]:"+arr[1][1]);
		
		for(int i=0;i<arr.length;i++) { //행을 담당
			for(int j=0;j<arr[i].length;j++) { // 열을 담당
				System.out.print(arr[i][j]+" ");
			}
		}
	}
}

package day10;

public class Day10_03 {

	public static void main(String[] args) {
		
		double a[] = new double[5];
		a[0] =1.1;
		double b[] = new double[3];
		b[0]=1.2;
		double c[] = new double[7];
		
		double arr[][]=new double[3][];
		arr[0] = a;
		arr[1] = b;
		arr[2] = c;
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
			System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
		
	}

}

 


 

Day10_04. 2차원 배열을 이용하여 왼쪽그림과 같이 출력하기

package day10;

public class Day10_04 {

	public static void main(String[] args) {

		int arr[][]=new int [5][5];
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				if(i==j) {
					arr[i][j]=2;
				}else {
					arr[i][j] = 1;
				}
			}
		}
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}

Day10_05. 사용자로부터 두수를 입력받고 그 입력받은 두수를 더하여 출력.

package day10;
import java.io.*;
public class Day10_05 {

	// 사용자로부터 두수를 입력받고 그 입력받은 두수 더하여 출력
	public static void main(String[] args) 
	throws IOException{

		BufferedReader br = 
		new BufferedReader (new InputStreamReader(System.in));
		
		int arr[][]=new int[3][3];
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length-1;j++) {
				System.out.print(i+1+"번째 "+ (j+1)+"번째 수:");
				arr[i][j] = Integer.parseInt(br.readLine());
			}
			arr[i][2] = arr[i][0]+arr[i][1];
			System.out.println();
		}
		
		for(int i=0;i<arr.length;i++) {
				System.out.println(arr[i][0]+"+"+arr[i][1]+"="+arr[i][2]);
		}
	}
}

 

Day10_06.

학생 5명의 시험점수 3개를 입력받아 총점과 평균을 구하여 출력하고

평균을 기준으로 내림차순 정렬.

 

package day10;
import java.io.*;
public class Day10_06 {

	public static void main(String[] args) 
	throws IOException{
		
		BufferedReader br =
		new BufferedReader(new InputStreamReader(System.in));
		
		int arr[][]=new int[5][4];
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length-1;j++) {
				System.out.print(i+1+"번 학생의 점수"+(j+1)+":");
				arr[i][j] = Integer.parseInt(br.readLine());
			}
			arr[i][3]= (arr[i][0]+arr[i][1]+arr[i][2])/3;
			System.out.println();
		}
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
		for(int i=0;i<arr.length-1;i++) {
			for(int j=i+1;j<arr.length;j++) {
				if(arr[i][3]<arr[j][3]) {
					int temp[][]= new int [5][];
					
					temp[i]=arr[i];
					arr[i]=arr[j];
					arr[j]=temp[i];
				}
			}
		}
		System.out.println("-------------------------------");
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}

 

강사님 풀이
package day11;
import java.io.*;
public class Day11_01 {

	public static void main(String[] args) 
	throws IOException{
		
		BufferedReader br =
		new BufferedReader(new InputStreamReader(System.in));

		
		int arr[][]=new int[5][5];
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length-2;j++) {
				
				System.out.print((i+1)+"번 학생의 점수 "+(1+j)+"=");
				arr[i][j] = Integer.parseInt(br.readLine());
			arr[i][3] += arr[i][j];
			}
			arr[i][4] = arr[i][3]/3;
			System.out.println();
			
		}
		System.out.println("-------------------");
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("---------------------");
		
		for(int i=0;i<arr.length-1;i++) {
			for(int j=i+1;j<arr.length;j++) {
				if(arr[i][4]<arr[j][4]) {
					int temp [] =arr[i];
					arr[i]= arr[j];
					arr[j] = temp;
				}
			}
		}
		
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}​