관리 메뉴

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

배열 2 - 배열과 반복문 본문

프로그래밍 언어/자바

배열 2 - 배열과 반복문

huenuri 2024. 8. 6. 22:58

어제는 보충수업 끝나고 집에 오니 9시가 다 되었다. 그때 저녁을 먹고 공부를 하려니 10시였다. 하지만 너무 피곤해서 공부는 하기 싫어 그냥 앞으로 들어야 하는 수업 진도표만 살펴보았다.
오늘 새벽에 일찍 일어나서 공부하려 했으나 오늘은 왜 이렇게 피곤하고 일어나기가 싫었다. 결국 1시간만 더 자자 2시간 후에 일어나자.. 이렇게 계속 타협을 보다 6시 반이 되고 말았다. 이제 더는 안될 것 같아 이불을 박차고 일어나본다.

 

수업 가기 전까지 1시간 반도 남지 않았지만 남은 시간 열심히 공부해봐야겠다. 평일에 부족했던 잠이 쌓였나 보다. 그래도 전보다는 잠을 많이 줄일 수 있어서 감사했다.
이제 본격적으로 공부를 해보자. 원래 계획은 3시 반에 일어나서 파이썬 응용 학습에 들어가는 거였는데 시간이 없으니 어제 하다 말았던 배열 공부를 이어서 하기로 했다. 어제 보충 수업을 통해 배열이 조금은 친숙하게 느껴졌다~



 

이론 2 - 배열과 반복문

배열은 그 자체로 보관하고 대입할 수 있지만, 조건문과 반복문과 같은 로직으로 활용하는 것이 목표이다. 따라서 지금까지 배운 것들을 모두 사용할 수 있다.

 

배열 안의 모든 데이터를 출력할 수 있다. 배일은 다수의 데이터를 가지고 있으므로 for문이나 while문 같은 반복문을 써야 한다.

 

 


배열의 길이를 넘어서면 프로그램이 죽는다. 따라서 범위가 넘지 않도록 해야 한다.

 
 
 
 
 

이 예제는 배열 안의 전체 데이터를 출력하는 것이다. 이 데이터는 위험하기도 한데, 배열의 길이를 500에서 400으로 바꾸면 오류가 발생한다. 이러한 오류를 어떻게 예방할 수 있을지 고민할 필요가 있다.

 
 
 
 
 

이번에는 500이 사라지고 length가 되었다. length를 사용하는 이유가 바로 이것이다. length를 400으로 바꾸어도 문제가 전혀 없다.
배열에 숫자를 집어넣는 것을 하드코딩이라고 하며 이런 방법은 지양해야 한다.


 

 

 

for문은 기능은 좋지만 복잡하다. 원래 for문을 축약한 형태를 예시에서 보여준다. 우리가 필요한 것은 i 값이 아니라 데이터의 i 값이므로, 이를 x 값으로 만든어준다.
데이터의 값을 하나하나 가져오는 방식을 for each문이라고 한다. 인덱스를 쓰지 않고도 하나의 변수처럼 사용할 수 있는 장점이 있다. 인덱스를 사용하지 않고 배열에 들어있는 값만 쓴다면 for each 문을 사용하면 된다.

 
 
 
 
 

for each문은 데이터의 각각을 출력하는 것이다.


 

 

 

 

 


 

 

 

 



for문을 사용해 짝수를 출력하는데 처음 나오는 짝수는 사용하면 안되니 break문을 사용한다.

 
 
 
 
 

여기까지 이론 학습을 진행했다. 학습일지를 쓰는 동안 잠도 많이 깼다. 오늘 그래도 1시간 만 더 자고 4시 반에는 일어났어야 하는데 큰 후회가 된다. 그래도 가끔은 이렇게 잠을 많이 자는 날도 필요한 것 같았다. 오늘 새벽에 몸이 좀 안좋은 걸 느껴서 잠을 더 자야겠다고 생각하기도 했었다.

이제 문제를 풀어보겠다!



 

퀴즈 2 - 배열과 반복문

 

 

 



 

실습 3 - 반복문으로 배열 사용하기


 

이렇게 문제를 풀었더니 iArray의 주소값이 출력되었다. 실제 값이 출력되도록 뭔가를 바꾸어주어야 한다.

 

 

이제 잘 출력이 되었다. 이 둘의 차이를 조금 알 것 같다.

 



 

실습 4 - 평균 구하기


 

틀린 코드

자료형으로 선언하지 않은 것 같아서 이 부분을 고쳐보았다.

 
 

다시 시도한 코드

 

고쳤는데도 틀려서 이 문제는 영상을 참고해서 풀어보았다.

 
 
 

맞은 코드

 

내가 잘못 쓴 부분은 sum을 더하는 것이었다. 계속 합계가 더해지므로 =이 아닌 +=을 해주어야 한다.

 



 

실습 5 - 첫 짝수 찾기

 

틀린 코드

 

break를 if문 안에 써도 밖에 써도 계속 오류가 떴다. 이 오류는 다음과 같은 문제라고 한다.

 


 

맞는 코드

 

배열을 할 때는 원소의 모든 개수를 찾아야 하므로 i를 써야하는데 꼭 잊어버린다.

 



 

퀴즈 3 - 향상된 for 문

 

 

 

 

이제 이런 문제는 자신이 있다.



 

실습 6 - 향상된 for 문

 

틀린 코드

 

 

 

 

for each문은 for과 조금 달라서 다른 방식으로 문제를 풀어야 한다. [i]를 사용하면 안되나보다.


 

맞는 코드

 

여러번 시도 끝에 풀어보았다. 이 문제는 영상을 시청해야 할 것 같다.

 



 

두번째 단원 학습을 마치고

이렇게 오늘의 새벽 공부를 마쳐본다. 오늘은 한 단원밖에 하지 못해서 정말 아쉽다. 그 다음에는 2차원 배열인데 수업 끝나고 집에 와서 공부할 생각이다.
오늘은 취업 특강이 있어 여러 강의를 듣고 실습해보는 시간도 있다. AI 관련 강의인데 어떤 강의일지 기대가 된다. 앞으로 4주 동안 금요일마다 진행이 되는데 원래 몇 백만원씩 하는 보기 드문 프로그램이라고 한다.

일찍 가서 수업 준비도 해야 하니 오늘의 공부는 여기서 마칠 것이다! 그래도 조금이라도 할 수 있어서 정말 기뻤다~
막상 해보면 별거 아닌데 하기 전까지는 정말 마음의 갈등이 있곤 한다. 어제는 운동도 못해서 샤워도 해야 하고 빨리 준비해야겠다.