본문 바로가기
Study/Back

Jul.29.Sat.2023 나도코딩 Java 다차원배열 ~ Quiz#5

by Jobsoony 2023. 7. 29.
728x90
반응형

*다차원 배열 Multidimensional Array

   > 다차원 배열이란? 배열들이 뭉쳐서 하나의 면이 되는 배열. 주로 2차원 배열까지 많이 쓰고 간혹 가다 3차원 까진 사용됨.

                               👉🏻각 배열마다 들어가는 값의 개수가 똑같아야 하는 건 아님. 지난번 배웠던 배열은 1차원 배열.

   ★2차원 배열 선언하는 방법

       자료형[][] 배열이름 = new 자료형[][] {
                   {배열1},       𖤐배열이 하나가 아니라 여러 개라면 콤마, 꼭 찍어줘야 함
                   {배열2}
       }

   ★3차원 배열 선언하는 방법 (세로 x 가로 x 높이)       𖤐선언만 하고자 한다면? 자료형[][][] 배열이름 = new 자료형 [세로][가로][높이];

       자료형[][][] 배열이름 = new 자료형[][][] {
                   { {}, {}, {} },
                   { {}, {}, {} },
                   { {}, {}, {} }
       }

   ★특정 인덱스에 접근하는 방법

      배열이름[배열 줄 값(0부터 시작)][인덱스 값(0부터 시작)]
          𖤐배열 안에 없는 인덱스 값에 접근하려고 하면 ArrayIndexOutOfBoundsException 오류 생김
      ex) B2에 접근하려면?

System.out.println(seats[1][1]);


            C5에 접근하려면?

System.out.println(seats[2][4]);


     (예시 1) A열부터 C열까지 5 좌석씩 있는 소규모 영화관 좌석
     👉🏻1차원 배열

String[] seatA = {“A1”, “A2”, “A3”, “A4”, “A5”};
String[] seatB = {“B1”, “B2”, “B3”, “B4”, “B5”};
String[] seatC = {“C1”, “C2”, “C3”, “C4”, “C5”};


     👉🏻3X5 크기의 2차원 배열

String[][] seats = new String[][] {
	{“A1”, “A2”, “A3”, “A4”, “A5”},          -> 세로줄 [0]
	{“B1”, “B2”, “B3”, “B4”, “B5”},        -> [1]
	{“C1”, “C2”, “C3”, “C4”, “C5”}         -> [2]
}

   ->인덱스값  [0],   [1],    [2],   [3],    [4]

     👉🏻첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸인 배열

String[][] seats = new String[][] {
	{“A1”, “A2”, “A3”},
	{“B1”, “B2”, “B3”, “B4”},
	{“C1”, “C2”, “C3”, “C4”, “C5”}
}





*다차원 배열 순회 Multidimentional Array Loop

   > 다차원 배열 순회란? 다차원 배열에서 반복문을 통해 각각의 요소에 접근할 수 있음 👉🏻for문을 2번 사용하면 됨

      for (int i = 0; i < 배열들의 세로 개수; i++) { // 세로 기준
            for (int j = 0; j < 각 배열 인덱스 개수; j++) { // 가로 기준
                  System.out.print(배열이름[i][j] + “수행할 명령어“); // 배열이름의 i와 j에 해당하는 값들을 하나씩 출력
            }
      }

   (예시 1)
     -2차원 배열

String[][] seats = new String[][] {
	{“A1”, “A2”, “A3”, “A4”, “A5”},          -> 세로줄 [0]
	{“B1”, “B2”, “B3”, “B4”, “B5”},        -> [1]
	{“C1”, “C2”, “C3”, “C4”, “C5”}         -> [2]
}


     -2차원 배열 순회

for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 5; j++) {
		System.out.print(seats[i][j] + “ “);
	}
	System.out.println();
}         



     -각 배열의 인덱스 개수가 다를 경우
       👉🏻이런 경우엔 위와 같은 공식으로 코드를 입력하게 되면 A3 까지는 잘 출력이 되지만 index3 값에 해당하는 A4가없어서 에러 발생

String[][] seats2 = new String[][] {
	{“A1”, ”A2”, ”A3”},
	{“B1”, “B2”, “B3”, “B4”},
	{“C1”, “C2”, “C3”, “C4”, “C5”}
}


for (int i = 0; i < seats2.length; i++) {
	for (int j = 0; j < seats2[i].length; j++) { // [세로줄 값(i)].length 로 각 세로줄마다 다른 인덱스 값을 가지고 있어도 출력 가능
		System.out.print(seats2[i][j] + “ “);
	}
	System.out.println();
}


   > 다차원 배열을 반복문을 이용해 값을 초기화하는 방법 (세로 10 x 가로 15에 해당하는 영화관)

String[][] seats3 = new String[10][15];
String[] eng = {“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”};

for (int i = 0; i < seats3.length; i++) { // 세로
	for (int j = 0; j < seats3[i].length; j++) { // 가로
		seats3[i][j] = eng[i] + (j +1);
	}
}


       !!! 어떤 사람이 H9, H10을 예매했다면?

seats3[7][8] = “—“;
seats3[7][9] = “—-“;


       !!! 잔여 좌석 확인

for (int i = 0; i < seats3.length; i++) { // i가 seats3배열의 세로줄 값 보다 작다는 조건이 참인 동안 반복
	for (int j = 0; j < seats3[i].length; j++) {
		System.out.print(seats[i][j] + “ “);
	}
	Sytem.out.println();
}






*아스키코드 ASCII CODE

   > 아스키코드란? ANSI(미국 표준 협회)에서 제시한 정보 교환을 위한 미국 표준 코드

       👉🏻알파벳 대문자(A)는 65부터 시작, 소문자(a)는 97부터 시작, 숫자(0)는 48부터 시작

   (예시) 아스키코드 확인

char c = ‘0’;
System.out.println(c); // 0
System.out.println((int) c); // 아스키 코드 10진수 48



   𖤐아스키코드 활용 배열 순회 (영화관 좌석 배열)

String[][] seats = new String[10][15[;
char ch = ‘A’;
for (int i = 0; i < seats.length; i++) {
	for (int j = 0; j < seats[i].length; j++) {
		seats[i][j] = String.valueOf(ch) + (j + 1);
	}
	ch++;
}

for (int i = 0; i < seats.length; i++) {
	for (int j = 0; j < seats[i].length; j++) {
		System.out.print(seats[i][j] + “ “);
	}
	System.out.println();
}





*퀴즈#5

728x90
반응형