for( int i[] :a ) {
for( int j:i)
hap = hap +j;
}
이 부분 해설 봐도 하나도 모르겠네욧 .
첫번째 포문도 모르겠고
두번째도 무슨뜻인지 독해가 안되요..
해설에는 1행을 옮기고 4번을 4회 반복수행한다. 이부분도 무슨말인지 모르겠어요.
안녕하세요 길벗수험서 운영팀입니다.
먼저 배열선언부는 배열 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 11:03:30
안녕하세요 길벗수험서 운영팀입니다.
먼저 배열선언부는 배열 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가 됩니다.
행복한 하루되세요 :)