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

배열 7 - 이차원 배열과 미션 문제 실습 본문

프로그래밍 언어/자바

배열 7 - 이차원 배열과 미션 문제 실습

huenuri 2024. 8. 13. 00:14

이제 지난번에 학습했던 엘리스 자바1에서 이차원 배열 문제를 풀어보려고 한다. 벌써 11시가 다 되어서 잠이 슬슬 몰려오지만 이차원 배열과 미션 문제, 그리고 실력 확인 테스트까지는 학습하고 취침하려고 한다.

그래야 내일 새벽에 일어나서 이차원 배열 수업 영상을 들으면서 학습을 이어갈 수 있을 것 같다. 


 

 

 

 

실습 7 - 이차원 배열

 

 

 

배열의 원소가 모두 출력되었다. 혹시 대괄호를 바로 출력하는 방법이 있나 살펴보았는데, 그런 건 없고 일일이 문자열로 넣어주어야 했다. 이 문제는 별로 어렵지 않았다.


 

 

 

 

 

실습 8 - 이차원 배열 반복하기

이 문제는 for문과 foreach문을 각각 사용하여 문제를 푸는 실습이다. 한번 풀어보기로 하자.

 

 

 

두 개의 반복문으로 모두 잘 출력이 되었다. foreach 문은 처음 사용해보는데 무척 잘 풀었다. 정답을 보지도 않고도.. 이제 미션 문제 두 문제만 풀고 이 단원을 마무리해볼 것이다.


 

 

 

 

미션 1 - 평균은 넘겠지

 

첫번째 도전

 

이 문제는 많이 어려웠다. 한참을 고민했지만 빨간줄을 없애지 못했다. 정답을 참고하면서 풀었는데도 말이다.


 

 

 

 

다시 풀어보기

 

드디어 풀었다. 사실 고친 건 한 가지밖에 없었다. 반복문과 조건문이 있을 때 어떤 것을 먼저 써야 하는지 아직 잘 모르는 것 같다. for문은 항상 먼저 쓰고 그 안에 조건을 쓰는 거였다. 그래야 어떤 틀에서 반복을 할지 알게 되기 때문이다.

조금 전의 코드에서는 평균보다 넘는 사람들 한에서만 반복이 되는 거였다.


 

 

 

 

미션 2 - 반별 평균 점수 구하기

이 문제는 정말 어려워서 지난번에도 풀지 못하고 넘어갔던 문제이다. 이번에는 꼭 해결하고 말 거다!

 

 

 

문제를 다 풀었다. 점수를 더하는 부분이 가장 어려웠는데 이 부분은 검색하며 참고했고, 나머지는 모두 스스로 풀었다. 

 

1. 왜 grades[0].length를 사용하는지?

이 for 문은 0부터 grades[0].length - 1까지 순회하며, 각 반의 점수를 더하고 있다. 여기서 중요한 점은:

  • grades[0].length를 기준으로 for 문을 돌리는 이유는 1반과 2반의 학생 수가 동일하다고 가정하고 있기 때문이다. 각 반의 학생 수(점수의 개수)가 동일하기 때문에, 하나의 기준(grades[0].length 또는 grades[1].length)만으로 반복문을 제어할 수 있다.
  • 만약 학생 수가 다른 반이라면, 두 반의 길이를 비교하고 더 짧은 배열의 길이를 기준으로 반복문을 돌리거나 각각의 반에 대해 별도로 반복문을 실행해야 한다.
  • grades[0].length나 grades[1].length를 사용해도 두 반의 학생 수가 같기 때문에 결과는 동일하다.

 

2. sum += grades[0][i]가 의미하는 것

 

  • for 문은 두 반의 점수를 각각 순회한다.
  • sum1 += grades[0][i]는 1반의 점수를 계속 더해나가고, sum2 += grades[1][i]는 2반의 점수를 더한다.

즉, 각각의 반의 점수들을 더할 때 이 두 개의 배열이 필요한 것이다.


 

 

 

 

지난 번에는 0점을 맞았지만 이번에는 다 풀어서 100점을 맞았다. 정말 뿌듯하고 기쁘다!


 

 

 

학습을 마치고

밤 12시가 넘어서야 2차원 배열 엘리스 학습이 끝났다. 이제 남은 건 최종확인 테스트를 풀어보는 것이다. 이 문제는 지금까지 어떤 과목이든 한번도 풀어본 적이 없었지만 이제는 풀어볼 수 있을 것 같다.

하지만 지금은 비몽사몽하니 내일 풀어보는 것이 더 나을 것 같다.