인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

dbgud85님의 프로필 이미지
dbgud85

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

함수와 재귀함수 (v2)

sum+=arr[i] 합계 문의

해결된 질문

작성

·

20

·

수정됨

0

14:28 부분인데요

밑에 어느분이 합계 25로 나왓는데 이해가 안간다는 글을 봣습니다. 저도 결과는 다르지만 이 부분이 이해가 안됩니다.

for문으로 수행될때....

sum=+arr[i]

1 0 1

3 1 2

6 3 3

10 6 4

i=5는 수행이 안됨

 

이렇게 해서 sum값이 10이 안될까요?

왜 1+2+3+4+5 의 값 15가 되는지 이해가 안되네요

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요,

2가지를 혼동해서 헷갈리고 계십니다.

 

인덱스(i)와 인덱스를 통한 배열의 값 (arr[i])은 다릅니다.

지금 보시면 계산을 i 그 자체로 하고 계십니다.

arr[0]은 0이 아니라 1입니다. arr의 0번째 인덱스는 arr의 배열의 첫번째 요소입니다.

그래서 arr[0], arr[1], ... , arr[4]는 1, 2, 3, 4, 5를 가리킵니다.

arr[5]로 접근하는 순간 배열의 밖을 접근하기 때문에 오류가 발생하거나 쓰레기값(그 전에 다른 프로그램에 의해서 메모리 주소에 값이 있을 경우)을 가져올 수 있습니다.

 

그래서 첫번째 요소부터 맨 끝의 요소까지 더해서 15가 됩니다.

시험에서 자주 헷갈리도록 유도되는 문제입니다.

 

배열의 인덱스 그 자체와, 인덱스로 접근하는 배열의 값을 헷갈리시면 안됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. dbgud85님.

for 루프와 관련된 질문을 해주셨네요. Loop를 통해 합계를 구할 때, 각 루프 회차마다 sum에 새로운 값을 더하고 그 값들이 누적됩니다. 즉, sum은 이전까지 더해진 값에 다음 배열 요소 arr[i]를 더한 값이 됩니다. 따라서, sum이 차례대로 계산되는 과정은 다음과 같이 이루어집니다:

  1. 시작하면서 초기 sum 값은 0입니다.
  2. i=0 일 때, sum += arr[0]로 인해 sum0 + arr[0]이 되어 arr[0] 값이 저장됩니다.
  3. i=1 일 때, sum += arr[1]로 인해 sum은 이전 값 + arr[1]이 됩니다.
  4. 이러한 과정이 각 반복마다 이루어지며, 마지막 배열 요소까지 계산이 완료되면 sum은 모든 요소의 합을 가진 최종 값이 됩니다.

질문해주신 내용과 관련된 유사한 설명을 포함한 질문 및 답변을 소개합니다:

for 루프에서 sum =+ arr[i] 같은 구문이 배치될 때, + 기호가 다른 수식과 결합하여 결과에 영향을 미치지는 않는지 확인하는 것도 좋습니다. 계산이 원하는 대로 되는지 디버깅을 통해 중간 상태를 자주 검토하는 습관을 가지시면 오류를 줄이는 데 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dbgud85님의 프로필 이미지
dbgud85

작성한 질문수

질문하기