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

뚜만몬님의 프로필 이미지
뚜만몬

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이2

배열 문제 문의 드려요!

작성

·

267

·

수정됨

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: 캡쳐1005.JPEG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
이해가 안되서 질문 올립니다ㅠㅠ

1.주황색 줄표시 한 건 min과 max 값이 같다는건가요?ㅠ설명들었지만 이해가 안되서요. 아니면 배열 0번째 칸에 같이 숫자를 넣겠다는건가요? 같이 넣으면 따로 분리해서 인식하는건가요??

  1. 보라색 네모칸에 있는 for문 int i=1 은 왜 1로 초기화값을 줬을 까요?ㅠㅠ

  2. if (number[i] < min number) 이 조건은 배열 number i열에 있는 값이 minnumber보다 작은지 어케 알 수 있을까요? 위에 minnumber=maxnumbers[0] 선언해서 그런가요?ㅠㅠㅠ헝헝

답변 2

0

안녕하세요. 뚜만몬님, 공식 서포터즈 OMG입니다.

1.

다음과 같은 1줄의 코드는

minNumber = maxNumber = numbers[0];

아래의 2줄의 초기화 과정과 동일합니다. 2줄로 초기화 하는 것을 1줄로 초기화하였습니다.

maxNumber = numbers[0];
minNumber = numbers[0];

numbers[0] 값을 maxNumberminNumber에 들어가는 것을 볼 수 있습니다.

 

2.

반복문의 시작이 0이 아닌 1부터 시작인 이유는

첫 데이터는 모두 동일하기 때문에, 그 다음의 숫자들부터 비교 확인하여 가장 큰 값, 가장 작은 값을 찾을 수 있기 때문입니다.

 

3.

if (number[i] < min number) 이 조건은 배열 number i열에 있는 값이 minnumber보다 작은지 어케 알 수 있을까요?

작은 지 알고 있는게 아니고, 값을 비교하여 작을 경우를 확인하려는 조건문입니다.

가장 작은 값을 세팅하기 위한 선행작업이라고 보시면 됩니다.

감사합니다.

0

최소값, 최대값을 구할땐 배열 안 0번째 순서부터 차례차례 값을 비교하며 찾아가게 됩니다.

그러기 위해선 min과 max 모두 배열의 0번째인 numbers[0]값을 먼저 넣어 놓고

min의 경우 배열 0번째랑 1번째를 비교해 -> 배열 1번째가 더 작아? 그럼 1번째 값을 넣어 -> 1,2비교 ->2,3비교 ......

비교하다보면 제일 작은 혹은 큰 숫자를 찾아 min과 max에 담겠죠

주황색 줄을 풀어서 쓰면

int minNumber = numbers[0]

int maxNumber = numbers[0] 이고

코드 수를 줄이기 위해 위에 int minNumber,maxNumber선언 후

minNumber = maxNumber = numbers[0] 으로 초기화한겁니다

 

for문은 한번이라도 도는걸 줄이기 위해 1을 넣지 않았나 싶습니다.

어차피 배열 0과 1부터 비교를 할거니 배열 0과 배열 0을 비교하는건 의미가 없죠

 

3번질문이 비교하는 과정인겁니다 for문을 돌며 새로 갱신된 min값이 배열의 i번째보다 작아? 그럼 그걸 min에 넣을거니까요~

뚜만몬님의 프로필 이미지
뚜만몬

작성한 질문수

질문하기