코딩/2-JAVA

C09이차배열 => C0901이차배열 , C0902이차배열과데이터

tree0505 2025. 6. 25. 14:26
반응형
    • C0901이차배열

  • C0901개념01_이차배열
package C0807배열입력심화_문제;

import java.util.Scanner;

/*
	[문제]
		1. 사용자로부터 좌석번호(index)를 입력받아 예매하는 시스템이다.
		2. 예매가 완료되면 해당 좌석 값을 1로 변경한다.
		3. 이미 예매가 완료된 좌석은 재구매할 수 없다.
		4. 한 좌석당 에매 가격은 12000원이다.
		5. 프로그램 종료 후, 해당 영화관의 총 매출 금액을 출력한다.
	[예시]
		seat = 0 0 0 0 0 0 0
		
		좌석선택 : 1
		seat = 0 1 0 0 0 0 0
		
		좌석선택 : 3
		seat = 0 1 0 1 0 0 0
		
		좌석선택 : 3
		seat = 0 1 0 1 0 0 0
		이미 예매가 완료된 자리입니다.
		-------------------------
		총 금액 : 24000원
 */

public class C0807문제04 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);	
		
		int[] seat = new int[7];
		
		boolean run = true;
		while(run) {
			System.out.println("== 영화관 ==");				
			System.out.println("1.좌석예매");
			System.out.println("2.구매");
			
			System.out.print("메뉴 선택 : ");
			int sel = scan.nextInt();
			
			if(sel == 1) {
				for(int i = 0; i < 7; i++) {
					System.out.print(seat[i] + " ");
				}
				System.out.println();	
				
				System.out.println("예매할 좌석을 입력하세요.");
				// 이후 알아서 만들기 
				
			}
			else if(sel == 2) {
				System.out.println("정산후종료.");
				run = false;
			}
		}
		
		scan.close();
		
	}
}

  • C0901개념02_값수정
    • 자바는 배열을 int로 만들면 전부 0이 들어가 있다. 
    • int [ ] [ ] darr = new int [ 3 ] [ 3 ]; 
      •  

package C0901이차배열;

import java.util.Arrays;

public class C0901개념02_값수정 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            arr배열에 1~9를 순차적으로 저장하고 출력하시오.
	        [정답]
	            arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]    
	    */

		int[][] darr = new int[3][3];
		int num = 1;
	    for(int i=0; i<darr.length; i++) {
	        for(int j=0; j<darr[i].length; j++) {
	        	darr[i][j] = num;
	            num += 1;
	        }
	    }
	    
	    for(int i = 0; i < darr.length; i++) {
	    	System.out.println(Arrays.toString(darr[i]));
	    }
	}

}

  • C0901개념03_인덱스두개
    • 2차배열은 인덱스가 2개이다. 
package C0901이차배열;

import java.util.Arrays;
import java.util.Random;

public class C0901개념03_인덱스두개 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            darr배열에 10~90까지 값을 저장 후
	            랜덤으로 값 하나를 출력하시오.
	        [예시]
	            darr :  [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
	            r1 : 1  r2 : 0
	            40    
	    */
		Random ran = new Random();
		int[][] darr = new int[3][3];
	
		int num = 1;
	    for(int i=0; i<darr.length; i++) {
	        for(int j=0; j<darr[i].length; j++) {
	            darr[i][j] = num;
	            num += 1;
	        }
	    }
	    
	    for(int i = 0; i < darr.length; i++) {
	    	System.out.println(Arrays.toString(darr[i]));
	    }
	    
	    int r1 = ran.nextInt(3);
	    int r2 = ran.nextInt(3);
	    System.out.println(darr[r1][r2]);
	}

}

  • C0901개념04_미리값넣기
package C0901이차배열;

import java.util.Arrays;
import java.util.Random;

public class C0901개념04_미리값넣기 {

	public static void main(String[] args) {
		 /*
	        아래와같이 이차원으로미리 값을 넣어둘수있다. 자동으로 new[3][3] 이된것이다. 
	    */
		
		int[][] darr = {
				{1,2,3},
				{4,5,6},
				{5,6,7}
		};
	    
	    for(int i = 0; i < darr.length; i++) {
	    	System.out.println(Arrays.toString(darr[i]));
	    }
	    
	}

}

  • C0901개념05_대괄호위치
package C0901이차배열;

import java.util.Arrays;
import java.util.Random;

public class C0901개념05_대괄호위치 {

	public static void main(String[] args) {
		 /*
	        아래와같이 [][] 의 위치는 앞에 붙여도되고, 뒤에 붙여도된다. 
	    */
		
		int[][] arr = new int[3][3]; //원형 
		int arr2[][] = new int[3][3];
	    
	}

}

 

    • C0901이차배열_문제

  • C0901문제01
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제01 {

	public static void main(String[] args) {
		/*
        [문제]
            darr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고, 
            랜덤값(1~100)을 9개 저장하시오.
        [예시]
            [56, 64, 10] 
            [100, 40, 12]
            [9, 70, 29]     
    */
		Random ran = new Random();
		int[][] darr = new int[3][3];
		for(int i = 0; i<darr.length; i++) {
			for(int j = 0; j<darr[i].length; j++) {
				int a = ran.nextInt(100)+1;
				darr[i][j] = a;  
				//이 한 줄이 총 9번 실행됨
				//실제 데이터를 넣는 동작. 이게 핵심!
			}
		}
		for(int i = 0; i<darr.length; i++) {
			System.out.println(Arrays.toString(darr[i]));
		}
		
	}

}

  • C0901문제02
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제02 {

	public static void main(String[] args) {
		/*
        [문제]
            darr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고, 
            랜덤값(1~100)을 9개 저장하시오.
             arr배열의 값 중에서 50이상을 전부 출력하시오.
        [예시]
            [42, 60, 31]
			[42, 73, 84]
			[83, 29, 23]
			60
			73
			84
			83  
    */
		Random ran = new Random(); 
		int [][]darr = new int [3][3];
		
		for(int i = 0; i<darr.length; i++) {
			for(int j = 0; j<darr[i].length; j++) {
				//j<darr[j].length; => 길이로 하면 안되나? 
				//darr[i][j] 그냥 값 1개? 
				//darr[j] = 없는 말 
				int a = ran.nextInt(100)+1;
				darr[i][j] = a;
			}
		}
		
		for(int i = 0; i<darr.length; i++) {
			System.out.println(Arrays.toString(darr[i]));
			//i만 출력하면. 이 i는 세로를 의미하나?? 
		}
		
		for(int i = 0; i<darr.length; i++) {
			for(int j = 0; j<darr[i].length; j++) {
				if(darr[i][j] >= 50) {
					System.out.println(darr[i][j]);
					//개별 출력 
					//셀프탐색인가?? 
					//그냥 단순 탐색 
				}
			}
		}
		
	}

}
/*
 * 	int [] arr = {10, 20, 30};
 *  3바퀴 
 * 	for(int i = 0; i < arr.length;i++){} // 3바퀴 =>단순
 * 	
 * 
 *	9바퀴 => 셀프탐색
 * 	for(int i = 0; i < arr.length;i++){
 * 		for(int j = 0; j < arr.length; j++){
 * 		}
 *  }
 *  	
 *  9바퀴 => 보통탐색
 *  int [] arr2 = {40, 50, 60};
 *  for(int i = 0; i < arr.length;i++){
 * 		for(int j = 0; j < arr2.length; j++){
 * 		}
 *  }
 *  
 *  int[][] = ar[3][3]; // 자기가 9개야 9바퀴 => 단순탐색
 *  
 *  
 */
// 단순탐색

// 셀프탐색
// 보통탐색


//셀프탐색 
	//1차배열이 자기를 자신을 검사할때. 
//보통탐색 
	//1차배열이 다른 1차배열을 검사할떄. 
//2차배열 
	//for for 단순검색

  • C0901문제03
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제03 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고, 
	            랜덤값(1~100)을 9개 저장하시오.
	            arr배열의 값 중에서 4의 배수만 출력하시오.
	        [예시]
	            [20, 5, 41]
				[2, 69, 45]
				[9, 38, 88]
				20
				88

    */
		
		Random ran = new Random(); 
		int [][] arr = new int[3][3];
		
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				int a = ran.nextInt(100)+1; 
				arr[i][j] = a; 
			}
		}
		
		for(int i = 0; i<arr.length; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				if(arr[i][j]%4 == 0) {
					System.out.println(arr[i][j]);
				}
			}
		}
	}

}

  • C0901문제04
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제04 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고, 
	            랜덤값(1~100)을 9개 저장하시오.
	            arr배열의 값 중에서 50이상인 수의 합을 출력하시오.
	        [예시]
	            [5, 32, 10]
				[24, 55, 76]
				[36, 64, 48]
				195

    */
		Random ran = new Random();
		
		int [][] arr = new int [3][3];
		
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				int a = ran.nextInt(100)+1;
				arr[i][j] = a; 
			}
		}
		
		for(int i = 0; i<arr.length; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		int total = 0; 
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				
				if(arr[i][j] >= 50) {
					total += arr[i][j]; 
				}
			}
			
		}
		System.out.println(total);
	}

}

  • C0901문제05
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제05 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고, 
	            랜덤값(1~100)을 9개 저장하시오.
	            arr배열의 값 중에서 50이상인 수의 개수를 출력하시오.
	        [예시]
	            [63, 69, 17]
				[73, 69, 38]
				[55, 57, 14]
				6

    */
		Random ran = new Random(); 
		
		int [][] arr = new int [3][3];
		
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				int a = ran.nextInt(100)+1; 
				arr[i][j] = a; 
			}
		}
		
		
		for(int i = 0; i<arr.length; i++) {
			//System.out.println(arr[i]);  =>왜 안되지? 
			System.out.println(Arrays.toString(arr[i]));
		}
	   //----------------------------------------------
		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();
		}
		//------------------------------------
		int count = 0; 
		for(int i = 0; i<arr.length; i++) {
			for(int j = 0; j<arr[i].length; j++) {
				
				if(arr[i][j]>= 50) {
					count += 1; 
				}
			}
		}
		System.out.println();
	}

}

  • C0901문제07
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제07 {

	public static void main(String[] args) {
		 /*
	        [문제]
	            [1] arr배열에 랜덤 값(1~100)을 9개 저장 후 출력하시오.
	            [2] 그 중에 가장 큰 값을 출력하시오.
	        [예시]
	            [25, 11, 1]
				[67, 12, 96]
				[8, 17, 86]
				------
				96
    */
		Random ran = new Random(); 
		int[][] darr = new int[3][3];
		
		for(int i = 0; i<darr.length; i++) {
			for(int j = 0; j<darr[i].length; j++) {
				int a = ran.nextInt(100)+1; 
				darr[i][j] = a;
			}
		}
		
		for(int i = 0; i<darr.length;i++) {
			System.out.println(Arrays.toString(darr[i]));
		}
		System.out.println("---------");
		
		int max = darr[0][0];
		for(int i = 0; i<darr.length; i++) {
			for(int j = 0; j<darr[i].length; j++) {
				if(max < darr[i][j]) {
					max = darr[i][j]; 
				}
			}
		}
		System.out.println(max);
	}

}

    • C0901문제08
package C0901이차배열_문제;

import java.util.Arrays;
import java.util.Random;

public class C0901문제08 {

	public static void main(String[] args) {
		 /*
	        [문제]
            apt배열은 아파트 1동의 각 세대를 의미한다.
            pay배열은 이번달 관리비를 뜻한다.    
            아래 문제를 잘 읽고 정답을 구하시오.


    */
		int[][] apt = {
				{101, 102, 103},	
				{201, 202, 203},	
				{301, 302, 303}	
			};
				
			int[][] pay = {
				{1000, 2100, 1300},	
				{4100, 2000, 1000},	
				{3000, 1600,  800}
			};
	   
			
		 /*
	        [문제 1] 
	            각 층별 관리비 합을 출력하시오.
	        [정답 1] 
	            4400 7100 5400    
	    */
			
			for(int i = 0; i<pay.length; i++) {
				int total = 0; 
				for(int j = 0; j<pay[i].length; j++) {
					total += pay[i][j]; 
				}
				System.out.println(total);
			}
	}

}

  • C0902이차배열과데이터

  • C0902개념01_시험점수_총합
package C0902이차배열과데이터;

public class C0902개념01_시험점수_총합 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		*/
		
		//2차배열이 필요한 이유는. 데이터 때문 
		int[][] student = {
		    {1001, 100, 20, 32},         // 152
		    {1002,  40, 43, 12},         // 95
		    {1003,  60, 21, 42},         // 123
		    {1004,  76, 54, 55},         // 185
		    {1005,  23, 11, 76}          // 110
		};
		
		
		/*
		    [문제] 
		        모든 점수의 총합을 출력하시오.
		    [정답] 
		        665    
		*/
		
		int total = 0;
		for(int i=0; i<student.length; i++) {
		    for(int j = 1; j<student[i].length; j++) {
		    	//int j = 1 => 번호는 하면 안되니까. 
		        total += student[i][j];
		    }
		}
		System.out.println(total);

	}

}

  • C0902개념02_시험점수_추가
package C0902이차배열과데이터;

import java.util.Arrays;

public class C0902개념02_시험점수_추가 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		        마지막 자리는 0으로 비어있다. 
		*/
		//자바는 push가 안된다. 
		//0이라는 공간을 만들어서 여기다가 집어 넣는다. 
		int[][] student = {
		    {1001, 100, 20, 32 ,0},         // 152
		    {1002,  40, 43, 12 ,0},         // 95
		    {1003,  60, 21, 42 ,0},         // 123
		    {1004,  76, 54, 55 ,0},         // 185
		    {1005,  23, 11, 76 ,0}          // 110
		};
		
		
		/*
	        [문제] 
	            각 학생별 점수 총합을 인덱스4자리에 추가하시오.
	        [정답] 
	            [1001, 100, 20, 32, 152]
				[1002, 40, 43, 12, 95]
				[1003, 60, 21, 42, 123]
				[1004, 76, 54, 55, 185]
				[1005, 23, 11, 76, 110]
	    */
		
		for(int i=0; i<student.length; i++) {
			int total = student[i][1] + student[i][2] + student[i][3];
			student[i][4] = total;
		     
		}
		
		for(int i = 0; i < student.length; i++){
			System.out.println(Arrays.toString(student[i]));
	    }

	}

}

  • C0902개념03_시험점수_순위추가
package C0902이차배열과데이터;

import java.util.Arrays;

public class C0902개념03_시험점수_순위추가 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		        마지막 두자리는 총합과 순위의 자리이다.
		*/
		
		int[][] student = {
		    {1001, 100, 20, 32 ,0 ,0},         // 152
		    {1002,  40, 43, 12 ,0 ,0},         // 95
		    {1003,  60, 21, 42 ,0 ,0},         // 123
		    {1004,  76, 54, 55 ,0 ,0},         // 185
		    {1005,  23, 11, 76 ,0 ,0}          // 110
		};
		
		
		/*
		    [문제] 
		        각 학생별 점수 총합을 인덱스4자리에 추가하시오.
		        총합을 비교하여 랭크를 인덱스5자리에 추가하시오.
		    [정답] 
		        [1001, 100, 20, 32, 152, 2]
				[1002, 40, 43, 12, 95, 5]
				[1003, 60, 21, 42, 123, 3]
				[1004, 76, 54, 55, 185, 1]
				[1005, 23, 11, 76, 110, 4]
		*/
		
		for(int i=0; i<student.length; i++) {
			int total = student[i][1] + student[i][2] + student[i][3];
			student[i][4] = total;
		     
		}
		
		for(int i = 0; i<student.length; i++) {
	        int count = 1;
	        for(int j = 0; j < student.length; j++) {
	            if(student[i][4] < student[j][4]) {
	                count += 1;
	            }
	        }
	        student[i][5] = count;
	    }
		
		for(int i = 0; i < student.length; i++){
			System.out.println(Arrays.toString(student[i]));
		}

	}
	//dense rank로도 만들어 보시오. 

}

  • C0902이차배열과데이터_문제

  • C0902문제01
package C0902이차배열과데이터_문제;

public class C0902문제01 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		*/
		
		int[][] student = {
		    {1001, 100, 20, 32},         // 152
		    {1002,  40, 43, 12},         // 95
		    {1003,  60, 21, 42},         // 123
		    {1004,  76, 54, 55},         // 185
		    {1005,  23, 11, 76}          // 110
		};
		 /*
	        [문제] 
	            국어 1등 번호를 출력하시오.
	        [정답]         	
	            1001    
	    */
	   
		int maxScore = 0; 
		int maxIndex = 0;
		
		for(int i = 0; i<student.length; i++) {
			if(maxScore < student[i][1]) {
				maxScore = student[i][1];
				maxIndex = i; 
			}
		}
		System.out.println(student[maxIndex][0]);

	}

}

 


  • C0902문제02
package C0902이차배열과데이터_문제;

public class C0902문제02 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		*/
		
		int[][] student = {
		    {1001, 100, 20, 32},         // 152
		    {1002,  40, 43, 12},         // 95
		    {1003,  60, 21, 42},         // 123
		    {1004,  76, 54, 55},         // 185
		    {1005,  23, 11, 76}          // 110
		};

		 /*
	        [문제] 
	            전체 1등 번호를 출력하시오.
	        [정답]  
	            1004  
	    */
	    int maxScore = 0; 
	    int maxIndex = 0; 
	    
	    for(int i = 0; i<student.length; i++) {
	    	int total = student[i][1] + student[i][2] + student[i][3];
	    	
	    	if(maxScore < total ) { //현재까지 가장 높은 점수인지 확인해서, 그렇다면 갱신한다
	    		maxScore = total; 
	    		maxIndex = i;
	    	}
	    }
	    System.out.println(student[maxIndex][0]);
	}

}

  • C0902문제03
package C0902이차배열과데이터_문제;

public class C0902문제03 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		*/
		
		int[][] student = {
		    {1001, 100, 20, 32},         // 152
		    {1002,  40, 43, 12},         // 95
		    {1003,  60, 21, 42},         // 123
		    {1004,  76, 54, 55},         // 185
		    {1005,  23, 11, 76}          // 110
		};
		/*
	        [문제] 
	            수학점수가 국어점수 보다 높은 번호를 출력하시오.
	        [정답]
	            1002    
	    */   
	   for(int i = 0; i<student.length; i++) {
		   if(student[i][1] < student[i][2]) {
			   System.out.println(student[i][0]);
		   }
	   }
	}

}

  • C0902문제04
package C0902이차배열과데이터_문제;

import java.util.Arrays;

public class C0902문제04 {

	public static void main(String[] args) {
		/*
		        student배열은 이번 학기 중간고사 성적이다.
		        가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		        각각 국어, 수학, 영어 점수이다. 
		*/
		
		int[][] student = {
		    {1001, 100, 20, 32},         // 152
		    {1002,  40, 43, 12},         // 95
		    {1003,  60, 21, 42},         // 123
		    {1004,  76, 54, 55},         // 185
		    {1005,  23, 11, 76}          // 110
		};
		/*
	        [문제] 
	            각각 점수별총합을 아래 total배열에 추가하시오.
	            순서대로 국어 , 수학 , 영어 점수이다.
	        [정답]
	            299,149,217
	    */   
	    int[] total = {0,0,0};
	    
	    for(int i = 0; i<student.length; i++) {
	    	total[0] += student[i][1];
	    	total[1] += student[i][2];
	    	total[2] += student[i][3];
	    }
	    System.out.println(Arrays.toString(total));
	}

}

  •  
반응형