책 내용 질문하기
111문제2번 해설
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
111
조회수
487
작성일
2019-03-31
작성자
탈퇴*원
첨부파일

문제 2번 중에

 

for (int i[] : a ) 부분이 무엇을 의미하는지 해석이 안됩니다...

 

자세한 풀이 부탁드립니다. 

답변
2019-04-01 14:19:22

안녕하세요 길벗수험서 운영팀입니다.

 

java 향상된 for문에 대한 다른 문제를 인용하여 해설해드리겠습니다.

교재 127쪽의 38번 문제입니다.

 

먼저 배열선언부는 배열 a에 값을 아래와 같이 저장한다는 의미입니다.

(NONE 부분은 존재하지 않음을 의미합니다.)

 

1

1

0

1

0

1

0

1

0

NONE

 

 

tottotsu0으로 초기화 한후,

for(int i[]:a) 2차원 배열 a의 각 요소들을 새로 선언된 i라는 1차원 배열로 받아들이겠다는 의미입니다.

2차원 배열의 각 요소는 1차원 배열 2, 위의 표에서 1행과 2행을 의미합니다.

2번의 회전을 하게 되는데,

첫번쨰 회전에서 i[]{ 1, 1, 0, 1, 0 }이라는 값을 가진 배열이 되겠고,

두번째 회전에서 i[]{ 1, 0, 1, 0 }이라는 값을 가진 배열이 되겠죠.

 

다음 for문을 보죠.

for (int j : i) tot += j;

int j를 선언하면서 ji의 각 요소를 하나씩 받으면서 반복하겠다는 의미입니다.

, i[]{ 1, 1, 0, 1, 0 }일 때, j는 저 요소들을 하나씩 저장하면서 5회 반복하겠고,

i[]{ 1, 0, 1, 0 }일 때, j는 요소들을 하나씩 저장하면서 4회 반복하면서,

tot += j는 총 9회 반복하게 되겠네요.

각 요소의 값을 더하는 과정이니 1만 모두 더하게 되면 tot5가 되겠네요.

 

다음 totSu = totSu + i.length; for(int j:i)에 속한 코드가 아닙니다. 해당 반복문의 코드는 tot+=j;에서 세미콜론이 등장하면서 끝나버렸죠.

for(inti[]:a)에 속한 코드이니 for(int j:i)가 끝날 때마다 한번씩 수행되서 총 2회 수행되는 코드입니다.

i.length는 배열 i의 길이를 의미하므로, 첫번째 회전에는 5, 두번째 회전에는 4가 됩니다.

totsu는 최종적으로 9가 되겠죠.

 

결국 마지막에 totsu9, tot5가 됩니다.

 

행복한 하루되세요 :) 

  • 관리자
    2019-04-01 14:19:22

    안녕하세요 길벗수험서 운영팀입니다.

     

    java 향상된 for문에 대한 다른 문제를 인용하여 해설해드리겠습니다.

    교재 127쪽의 38번 문제입니다.

     

    먼저 배열선언부는 배열 a에 값을 아래와 같이 저장한다는 의미입니다.

    (NONE 부분은 존재하지 않음을 의미합니다.)

     

    1

    1

    0

    1

    0

    1

    0

    1

    0

    NONE

     

     

    tottotsu0으로 초기화 한후,

    for(int i[]:a) 2차원 배열 a의 각 요소들을 새로 선언된 i라는 1차원 배열로 받아들이겠다는 의미입니다.

    2차원 배열의 각 요소는 1차원 배열 2, 위의 표에서 1행과 2행을 의미합니다.

    2번의 회전을 하게 되는데,

    첫번쨰 회전에서 i[]{ 1, 1, 0, 1, 0 }이라는 값을 가진 배열이 되겠고,

    두번째 회전에서 i[]{ 1, 0, 1, 0 }이라는 값을 가진 배열이 되겠죠.

     

    다음 for문을 보죠.

    for (int j : i) tot += j;

    int j를 선언하면서 ji의 각 요소를 하나씩 받으면서 반복하겠다는 의미입니다.

    , i[]{ 1, 1, 0, 1, 0 }일 때, j는 저 요소들을 하나씩 저장하면서 5회 반복하겠고,

    i[]{ 1, 0, 1, 0 }일 때, j는 요소들을 하나씩 저장하면서 4회 반복하면서,

    tot += j는 총 9회 반복하게 되겠네요.

    각 요소의 값을 더하는 과정이니 1만 모두 더하게 되면 tot5가 되겠네요.

     

    다음 totSu = totSu + i.length; for(int j:i)에 속한 코드가 아닙니다. 해당 반복문의 코드는 tot+=j;에서 세미콜론이 등장하면서 끝나버렸죠.

    for(inti[]:a)에 속한 코드이니 for(int j:i)가 끝날 때마다 한번씩 수행되서 총 2회 수행되는 코드입니다.

    i.length는 배열 i의 길이를 의미하므로, 첫번째 회전에는 5, 두번째 회전에는 4가 됩니다.

    totsu는 최종적으로 9가 되겠죠.

     

    결국 마지막에 totsu9, tot5가 됩니다.

     

    행복한 하루되세요 :) 

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.