되는대로 살자

[C언어 기출문제&풀이] 정보올림피아드 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 정보올림피아드

malu 2010. 11. 1. 17:24

다음은 어떤 프로그램의 일부이다. 이 부분을 실행시킨 후 m의 값은?
for(i=1;i<=10;i++)
   a[i]=i%3 + i%7; 

m=a[i];
for(i=2;i<=10;i++)
   if(a[i]>m)m=a[i];

풀이
for(i=1;i<=10;i++)
   a[i]=i%3 + i%7; 
에서
i갑의 변화에 대한 i%3값의 변화 - 1 2 0 1 2 0 1 2 0 1
i값의 변화에 대한 i%7값의 변화 - 1 2 3 4 5 6 0 1 2 3
따라서 a[i]의 값 = 2 4 3 5 7 6 1 3 2 4

m=a[i];
여기서 i는 10이기 때문에 m=a[10]=4;
for(i=2;i<=10;i++) 
   if(a[i]>m)m=a[i];
이 if은 a[i]의 값이 4보다 크면 m은 큰 값이 된다. 라는 것을 의미 한다.
따라서 a[2]부터 a[10] 까지의 값 중 가장 큰 값이 m 의 값이 된다.

그러므로  m=7