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

Rene02님의 프로필 이미지
Rene02

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

전달값 (Parameter)

섹션 7 전달값 질문입니다!

작성

·

212

0

 1. 6분 44초에 int result = 1; 이라고 작성해주셨는데이 의미가 궁금합니다! (result가 무엇을 의미하는지 궁금합니당 만약 결과값이라면 왜 1을 써야 하나요?)

  1. 6분 59초에 for i 를 쓰셨는데 여기서 i는 무얼 의미하는 건지 궁금합니다!

  2. 앞의 int result가 이해가 되지 않아 result = result * number;의 의미도 궁금합니다!

 

 

 

답변 2

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
추가 답변 드립니다.

말씀하신대로 number 가 2 이고 exponent 가 3 일 때 2 를 3 번 곱하므로 2 2 2 = 8 이 됩니다. i 가 3 보다 작다는 조건을 만족하는 동안이므로 0, 1, 2, 3 이 아닌 0, 1, 2 까지 3 회에 걸쳐 (= 3번 반복하여) 현재의 result 에다가 number 를 곱한 값을 다시 result 에 저장하게 됩니다. 그래서 처음에는 2, 두번째는 4, 세번째는 8 이 되며 3번 반복이 끝나므로 result 에는 8 이 저장되어 있는 상태가 되지요 😊

i 는 반복 횟수를 지정하기 위한 목적으로 사용되었으며 exponent 가 되는 것은 아닙니다. exponent 로 주어진 값보다 작다는 조건을 만족하는 동안 1씩 키워가면서 횟수를 세는 정도의 용도로 이해해주시면 되겠습니다.

감사합니다.

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?

하나씩 답변을 드리겠습니다 😊

1. result 에 1 을 설정하는 이유

int result = 1;

result 변수는 이름에서 의미하는 것처럼 결과가 저장되는 변수입니다. 거듭제곱 연산을 위해 전달받은 number 와 exponent 의 값에 따라 반복문을 수행하며 result 를 계속해서 업데이트 하게 되는 것인데요. 만약 number 가 2 고 exponent 가 3 이라면 2 를 3 번 곱하니 2 x 2 x 2 = 8 이 되겠지요. 즉 result 변수에 8 이 저장되게끔 하는 것이 이 메소드의 목표입니다.

처음 이 result 에 1 이 들어가있었다고 하면 반복문을 수행할 때마다 값이 이렇게 바뀔 거에요.

       result | number | 업데이트 된 result

1회차     1        2        1 x 2 = 2 (2가 다음 회차로 넘어갑니다)

2회차     2        2        2 x 2 = 4 (4가 다음 회차로 넘어갑니다)

3회차     4        2        4 x 2 = 8 (다음 회차는 없네요)

결국 업데이트 된 result 는 8 이 저장되는 것이죠.

모든 수에 1 을 곱하면 그 수가 그대로 남게 됩니다. 2 x 1 = 2 이며 4 x 1 = 4 가 되는 것처럼요. 그래서 result 에 처음에는 1을 넣어줬습니다. 만약 1 이 아닌 0 이 들어간다면 어땠을까요?

      result | number | 업데이트 된 result

1회차     0        2        0 x 2 = 0

2회차     0        2        0 x 2 = 0

3회차     0        2        0 x 2 = 0

엉뚱한 0 이라는 값이 result 변수에 저장되겠네요 😅

 

2. for 문의 i 역할

반복문 중에서 for 분은 일반적으로 인덱스(index) 의 첫글자를 딴 i 라고 하는 변수의 값을 증가시켜가며 반복을 수행합니다.

5회를 반복한다면 다음과 같이 할 수 있겠네요.

for (int i = 0; i < 5; i++) {    
    ... 반복 작업 ...
}

그러면 반복이 일어날 때마다 i++ 이라는 증감 연산을 통해 i 는 0, 1, 2, 3, 4 와 같이 순차적으로 커지다가 5 가 되었을 때는 for 문 가운데 있는 조건 i < 5 를 만족하지 않으므로 더 이상 반복문을 수행하지 않고 탈출하게 되는 거에요. 주어진 횟수만큼 반복을 올바로 할 수 있도록 역할을 수행하는 것이 i 이며, 배열을 순회하는 경우라면 coffees[0] 와 같이 대괄호 속에 인덱스를 넣어서 값에 접근할 수 있으므로 반복문 속에서 i 를 0 위치에 넣어서 활용하기도 한답니다.

이렇게 사용해볼 수 있겠네요.

String coffees[] = new String[4];
coffees[0] = "아메리카노"; // 0 부터 시작
coffees[1] = "카페모카";
coffees[2] = "라떼";
coffees[3] = "카푸치노";

for (int i = 0; i < 4 i++) {    
    System.out.println(coffees[i]);
}

 

3번 질문에 대한 답변은 1번의 답변 내용에 포함되어 있답니다 😊

천천히 읽어보시고 그래도 이해가 가지 않으신다면 다시 질문 남겨주시면 다른 방법으로 설명 드리겠습니다.
감사합니다.

Rene02님의 프로필 이미지
Rene02
질문자

친절한 답변 감사드립니다!!

1번의 경우 추가적으로 궁금한 사항이 있습니다. number가 2이고, exponent가 3이라면 2*2*2 =8이 되는 게 이 메소드의 목표인 것까지 이해가 되었습니다.

i가 3보다 작다는 조건을 만족하는 동안(0, 1, 2, 3까지) result값에다가 number를 곱해준다고 하셨습니다. result 즉 결과가 8인데 왜 result number를 진행해야 하는지 궁금합니다.

추가적으로 for i에서 i가 index를 의미하는 거까지 이해가 되었습니다. 그렇다면 여기서 변수 i는 exponent라고 봐도 될까요?

Rene02님의 프로필 이미지
Rene02

작성한 질문수

질문하기