문제 2번 중에
for (int i[] : a ) 부분이 무엇을 의미하는지 해석이 안됩니다...
자세한 풀이 부탁드립니다.
안녕하세요 길벗수험서 운영팀입니다.
java 향상된 for문에 대한 다른 문제를 인용하여 해설해드리겠습니다.
교재 127쪽의 38번 문제입니다.
먼저 배열선언부는 배열 a에 값을 아래와 같이 저장한다는 의미입니다.
(NONE 부분은 존재하지 않음을 의미합니다.)
1 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | NONE |
tot과 totsu는 0으로 초기화 한후,
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를 선언하면서 j는 i의 각 요소를 하나씩 받으면서 반복하겠다는 의미입니다.
즉, i[]가 { 1, 1, 0, 1, 0 }일 때, j는 저 요소들을 하나씩 저장하면서 5회 반복하겠고,
i[]가 { 1, 0, 1, 0 }일 때, j는 요소들을 하나씩 저장하면서 4회 반복하면서,
tot += j는 총 9회 반복하게 되겠네요.
각 요소의 값을 더하는 과정이니 1만 모두 더하게 되면 tot은 5가 되겠네요.
다음 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가 되겠죠.
결국 마지막에 totsu는 9, tot은 5가 됩니다.
행복한 하루되세요 :)
-
관리자2019-04-01 14:19:22
안녕하세요 길벗수험서 운영팀입니다.
java 향상된 for문에 대한 다른 문제를 인용하여 해설해드리겠습니다.
교재 127쪽의 38번 문제입니다.
먼저 배열선언부는 배열 a에 값을 아래와 같이 저장한다는 의미입니다.
(NONE 부분은 존재하지 않음을 의미합니다.)
1
1
0
1
0
1
0
1
0
NONE
tot과 totsu는 0으로 초기화 한후,
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를 선언하면서 j는 i의 각 요소를 하나씩 받으면서 반복하겠다는 의미입니다.
즉, i[]가 { 1, 1, 0, 1, 0 }일 때, j는 저 요소들을 하나씩 저장하면서 5회 반복하겠고,
i[]가 { 1, 0, 1, 0 }일 때, j는 요소들을 하나씩 저장하면서 4회 반복하면서,
tot += j는 총 9회 반복하게 되겠네요.
각 요소의 값을 더하는 과정이니 1만 모두 더하게 되면 tot은 5가 되겠네요.
다음 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가 되겠죠.
결국 마지막에 totsu는 9, tot은 5가 됩니다.
행복한 하루되세요 :)