2022 정보처리기사 실기 3회 13번
문제
13. 다음 코드에 대한 출력 값을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
int n;
int k;
int s;
int el = 0;
for(n=6; n<=30; n++){
s=0;
k=n/2;
for(int j=1; j<=k; j++){
if(n%j==0){
s=s+j;
}
}
if(s==n){
el++;
}
}
printf("%d", el);
|
cs |
정답
2
해설
이 C 언어 코드는 6부터 30까지의 수 중에서 완전수(perfect number)가 몇 개 있는지를 찾아내는 프로그램이다. 완전수는 자신을 제외한 약수의 합이 자신과 같은 수를 말한다. 예를 들어, 6의 약수는 1, 2, 3이며, 이 약수들의 합도 6이므로 6은 완전수이다.
이 코드는 각 수에 대해 그 수의 절반까지의 모든 수를 약수인지 검사하고, 약수이면 그 값을 합산한다. 만약 이 합산된 값이 원래의 수와 같다면, 그 수는 완전수이며 el 변수의 값을 하나 증가시킨다.
코드의 실행 결과는 el에 저장되어 있고, 이는 6부터 30까지의 범위 내에 있는 완전수의 개수를 나타낸다.
2022 정보처리기사 실기 3회 19번
문제
19. 다음 코드에 대한 출력 값을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class Main {
static int[] MakeArray(){
int[] tempArr = new int[4];
for(int i=0; i<tempArr.Length;i++){
tempArr[i] = i;
}
return tempArr;
}
public static void main(String[] args){
int[] intArr;
intArr = MakeArray();
for(int i=0; i < intArr.Length; i++)
System.out.print(intArr[i]);
}
}
|
cs |
정답
0123해설
이 Java 코드는 4개의 원소를 가진 배열을 만들고, 각 원소를 해당 원소의 인덱스 값으로 초기화한 뒤, 이 배열의 모든 원소를 출력한다.
MakeArray 함수는 크기가 4인 정수형 배열 tempArr를 생성하고, 배열의 각 위치에 인덱스 값을 할당한다. 따라서 tempArr는 {0, 1, 2, 3}이 된다.
main 함수에서는 MakeArray를 호출하여 intArr를 초기화하고, 이 배열의 모든 원소를 순서대로 출력한다.
2022 정보처리기사 실기 3회 20번
문제
20. 다음 코드에 대한 출력 값을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Exam {
public static void main(String[] args){
int a = 0;
for(int i=1; i<999; i++){
if(i%3==0 && i%2!=0)
a = i;
}
System.out.print(a);
}
}
|
cs |
정답
993
해설
이 Java 프로그램은 1부터 998까지의 수 중에서 3으로 나누어떨어지면서 2로 나누어떨어지지 않는(즉, 홀수이면서 3의 배수인) 가장 큰 수를 찾아 출력한다.
코드는 변수 a를 0으로 초기화하고, 1부터 998까지 각 숫자 i에 대해 i가 3의 배수이며 동시에 홀수인지를 확인한다. 이 조건을 만족하는 i가 있을 때마다 a를 해당 값 i로 업데이트한다.
따라서, 이 반복문은 3의 배수이면서 홀수인 가장 큰 수를 찾아 a에 저장한 다음, 그 값을 출력한다. 따라서 프로그램의 출력값은 993이다. 이는 1부터 998까지의 수 중에서 3으로 나누어떨어지면서 홀수인 가장 큰 수라고 할 수 있다.