클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

반복문과 배열 그리고 예외 처리 18 - 다차원 배열과 비정방형 배열 본문

프로그래밍 언어/자바

반복문과 배열 그리고 예외 처리 18 - 다차원 배열과 비정방형 배열

huenuri 2024. 8. 13. 14:09

아직 3장의 절반도 학습하지 않았는데 17번째 포스트가 기록되고 있다. 이미 공부했던 내용을 한번 더 복습하게 되니 분량이 많아지는 것 같다. 이제 책으로 다차원 배열 학습을 진행해보려고 한다.

기본 개념은 이미 알고 있으니 넘어가고 문제 풀이 위주로 학습일지를 써볼 것이다.


 

 

 

1. 다차원 배열

 

2차원 배열로 4년 평점 구하기

2차원 배열에 학년별로 1, 2학기 성적을 저장하고, 4년간 전체 평점 평균을 출력하는 문제이다.

 

첫번째 도전

 

이렇게 풀었더니 exception 오류가 발생했다. 배열의 요소에 하나를 더 접근했어야 하는데 바로 접근해서 생긴 오류이다. 코드를 수정하기로 하자.


 

 

 

 

다시 풀어보기

 

평점 평균이 잘 나왔다. 이전에 i와 j로 사용했던 변수를 구분하기 쉽도록 year와 term으로 써주었다는 것만 다르다. score[0]으로 접근하는 이유도 잘 알고 있다.

이제 정방형 배열에 대한 학습을 진행해보자. 이 부분은 수업 시간에 다루지는 않았다.


 

 

 

 

2. 비정방형 배열

지금까지 공부한 배열은 모두 정방형 배열이다. 정방형 배열은 각 행의 열의 개수가 모두 동일한 배열을 말하며, 비정방형 배열은 행마다 열의 개수가 서로 다른 배열이다.

 

비정방형 배열의 장점

  • 메모리 효율성: 모든 행이 동일한 열의 개수를 가질 필요가 없기 때문에 메모리를 더 효율적으로 사용할 수 있다. 필요에 따라 각 행에 다른 길이를 부여할 수 있다.
  • 유연성: 비정방형 배열을 사용하면 다양한 크기의 데이터를 쉽게 저장할 수 있다. 예를 들어, 학생마다 다른 과목 수를 수강하는 경우, 각 학생의 점수를 비정방형 배열에 저장한다.


 

 

 

 

배열 생성시에 초기화를 통해 비정방형 배열을 생성할 수도 있다. 

int intArray[][] = { {0}, {1, 2}, {3, 4, 5}, {6, 7, 8, 9} };

 

 

 


 

 

 

비정방형 배열의 생성과 접근

다음 그림과 같은 비정방형 배열을 만들어 값을 초기화하고 출력하라

 

첫번째 도전

 

 

오늘 아침에 만났던 오류가 똑같이 떴다. 이차원 배열에서 평균을 구할 때도 그랬는데, for문을 사용할 때 하나 더 접근해서 써야 하는데 이를 간과했다. 이 부분을 자주 잊어버린다. 이차원 배열이 일차원 배열과 다른 점이 바로 이것이다.

다음에는 잊지 않도록 꼭 기억해야겠다!


 

 

 

다시 풀어보기

 

 

이제 잘 출력이 되고 있다. 비정방형은 이렇게 배열의 크기를 자유롭게 만들 수 있다.


 

 

 

학습을 마치고

오늘 수업 시간에는 무슨 말인지 몰라 다 기록하지 못하고 집에 와서 남은 문제를 풀어보았다. 이제 이차원 배열도 비정방형 배열도 무엇인지 알게 되었다.

오늘 정말 공부하기 싫은 날이었지만 그래도 해보니 할만 했다.