인프런 커뮤니티 질문&답변

보오님의 프로필 이미지
보오

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

다차원 배열 순회 (후반전)

다차원 배열 순회 관련 질문입니다.

작성

·

367

0

         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);
            }
        }

이 부분에서 혹시 i < seats3.Length; 단순히 A부터 J까지 10개라서 10이되는건가요?

그리고 j < seats3[i] 는 어떤 원리로 15가 되는건지 궁금합니다.

답변 2

1



/*
예시 ) 이차원 배열을 선언과 동시에 초기화를 예제로 함.
      이차원 배열의 크기 = seats3[10][15] => seats3[첫번째 요소 크기][두번째 요소 크기]
      seats3.length;    //세로 => 10인 이유는 배열의 선언당시 첫번째 요소의 크기를 10으로 값을 선언해서 그렇고
      seats3[i].length; //가로 => 15인 이유는 배열의 선언당시 두번째 요소의 크기를 15로 값을 선언해서 그래용
      for(int i=0; i<seats3.length; i++) 
      => 정수형 i값은 0으로 지정하고 첫번째 요소의 크기만큼 반복 seats3[0~9]
      
      for(int j=0; j<seats3[i].length; j++) 
      => 정수형 j값은 0으로 지정하고 첫번째 요소의 해당하는 (두번째 요소)만큼 반복 seats3[0][0~14]

String[][] seats3 = new String[10][15];

           seats3 = {{A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15}, // seats3[0]
                    {B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15}, // seats3[1]
                    {C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15}, // seats3[2]
                    {D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15}, // seats3[3]
                    {E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15}, // seats3[4]
                    {F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15}, // seats3[5]
                    {G1,G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,G13,G14,G15}, // seats3[6]
                    {H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,H14,H15}, // seats3[7]
                    {I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15}, // seats3[8]
                    {J1,J2,J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,J13,J14,J15}} // seats3[9]


 */



0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
먼저 답변이 늦어 죄송합니다.

첫 번째 질문에 대해 답변 드릴게요.

이 부분에서 혹시 i < seats3.Length; 단순히 A부터 J까지 10개라서 10이되는건가요?

그렇습니다.
seats3 배열의 크기는 String[10][15]로 선언되어 있는데요. 쉽게 세로 크기 10 x 가로 크기 15 인 배열이라고 이해하시면 좋습니다. seats3.length 을 하게 되면 seats3 배열의 세로 크기를 의미하며 10 이 됩니다. 따라서 i는 0부터 9까지 변화하면서 반복문이 실행되지요.

두 번째 질문에 대한 답변입니다.

그리고 j < seats3[i] 는 어떤 원리로 15가 되는건지 궁금합니다.

seats3.length 가 배열의 세로 크기였다면 seats3[i].length 는 seats3 배열의 i 위치의 가로 크기를 의미합니다. 먼저 seats3[i] 자체가 seat3 배열의 i 인덱스에 해당하는 요소가 되구요. 2차원 배열 seats3 의 각 요소는 1차원 배열(가로 방향)인데, String[10][15] 에 의해 가로 방향의 크기를 15로 설정했지요.
따라서 seats3[i].length 는 seat3 배열의 i 인덱스에 해당하는 1차원 배열의 크기인 15가 됩니다. 결국 j는 0부터 14까지 변화하면서 반복문이 실행됩니다 😊

감사합니다.

보오님의 프로필 이미지
보오

작성한 질문수

질문하기