문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int main() { int count = 0; for (int j = 3; j <= 15; j++) { if (j % 3 != 0 && j % 5 != 0) { count++; } } for (int k = 1; k <= count; k++) { if (k * k <= count) { printf("%d", k); } } return 0; }
정답
123
123
해설
첫 번째 반복문에서 3부터 15까지 3의 배수도 5의 배수도 아닌 수를 찾는다: 4, 7, 8, 11, 13, 14로 총 6개이므로 count = 6이다. 두 번째 반복문에서 k는 1부터 6까지이며, kk <= 6인 조건을 만족하는 것은 k=1(11=1≤6), k=2(22=4≤6)이다. k=3일 때 33=9>6이므로 조건을 만족하지 않는다. 따라서 1, 2가 출력되고, 실제로는 printf에서 공백 없이 연속 출력되므로 '123'이 아니라 '12'가 정답이다.