관리 메뉴

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

반복문과 배열 그리고 예외처리 13 - 일차원 배열 2 : 배열 저장 및 출력하기 본문

프로그래밍 언어/자바

반복문과 배열 그리고 예외처리 13 - 일차원 배열 2 : 배열 저장 및 출력하기

huenuri 2024. 8. 12. 17:24

한 달 전에 공부했던 자바 배열 학습을 다시 진행해 본다. 이번주 금요일까지는 상속까지 학습을 마치려고 하는데 그때까지 마치려면 속도를 내야 할 것 같다.

아직 일차원 배열 문제가 5개 정도 남아있어 이 문제를 풀어본 다음에 책 학습도 진행하려고 한다. 오늘 저녁까지 배열 공부를 모두 마치고 메서드에 들어가는 것이 목표이다. 내일은 엘리스로 메서드 학습도 마칠 생각이다.

 

그럼 바로 공부를 시작해보자!


 

 

 

 

 

일차원 배열 이어서 학습하기

 

1. 3의 배수 출력하기

 

 

이렇게 3의 배수만 잘 출력이 되었다. 이 문제도 풀만한 문제였다. 영상을 중간중간 필요한 부부만 시청하며 아는 건 넘겼다. 배열에서 해당 값을 입력하는 scanner 함수를 쓰는 건 처음에는 많이 어려웠는데, 이제 어느 정도 알게 되었다.


 

 

 

 

2. 로또 번호 값 출력하기

 

1) 인덱스에 값 할당하기

 

각각의 값을 인덱스 값에 할당하는데 이 부분이 반복되므로 for문으로 감싸주면 된다.


 

 

 

 

2) 반복되는 부분 for문으로 감싸주기

 

이렇게 반복되는 부분을 for문으로 감싸주었다. 그리고 반복되지는 않지만 0번 인덱스의 값도 코드를 맞추기 위해 만들어주었다. 여기서부터는 그래도 이해가 되는데 그다음부터는 무슨 말인지 몰라서 여러 번 반복하며 시청해 보았다.


 

 

 

 

3) 중복된 값 제거하기

반복되는 인덱스를 j라는 새로운 변수로 만들어주되, j가 같은 위치에 있는 것처럼 착각하게 하기 위해 j를 하나씩 감소시킨다. j값이 중복되지 않을 때는 바로 그다음 인덱스로 넘겨주려면 어떻게 해야 할까? 2번 인덱스의 값이 2인데, 이 값을 없애고 머무르는 방법을 생각해봐야 한다. 그런 다음 j++을 만나면 다시 2번 인덱스에 값을 할당할 수 있다.

j는 어디에 값을 할당하고 있는지 위치를 나타내기도 한다. 이 내용은 직접 손코딩을 하지 않으면 알 수 없는 내용이므로 나중에 한번 해봐야겠다.


 

 

4) 랜덤한 수 출력하기

 

 

이제 중복된 값이 하나도 출력되지 않는다. 정말 어려운 문제였다. 이런 문제를 풀 때는 순차적으로 접근하며 하나씩 해결하는 것이 좋다고 한다.


 

 

 

 

3. 별의 개수 입력받아 출력하기

 

 

별의 개수를 입력하는 부분까지는 지난 예제를 통해 학습해서 어느 정도 알게 되었다. 근데 3번 코드는 조금 어려웠다. 입력한 값만큼 별의 개수를 출력하기 위해서는 이중 for문이 필요하다. i는 별의 개수를 저장할 인덱스 번호인데 반해, j는 이 값을 저장할 배열이 된다.

그렇기에 stars옆에 i가 아닌 j를 써야 하는 것이다. i를 사용하면 배열 인덱스 범위를 벗어났다는 오류가 뜬다.

 

 

 

이렇게 별이 잘 출력되고 있다. 이제 두 문제가 남아있는데 좀 어려운 문제이므로 다음 포스트에 이어서 학습해보려고 한다.


 

 

 

 

학습을 마치고

자율학습 시간이 30분밖에 남지 않았지만 나머지 문제를 풀며 일차원 배열을 학습해 볼 것이다. 이제 배열도 조금 감이 잡혀간다.