2022 정보처리기사 실기 3회 1번
문제
1. 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
void main{
field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
for(y=0; y<h; y++) {
for(x=0; x<w; x++) {
if(field[y][x] == 0) continue;
for(i=y-1; i<=y+1; i++) {
for(j=x-1; j<=x+1; j++) {
if(calculate(w,h,j,i) == 1) {
mines[i][j] += 1;
}
}
}
}
}
for(y=0; y<h; y++){
for(x=0; x<w; x++)
printf("%d", mines[y][x]);
printf("\n");
}
}
int calculate(w,h,j,i) {
if (i >= 0 && i < h && j >= 0 && j < w) return 1;
return 0;
}
|
cs |
예시
0 | 1 | 0 | 1 |
0 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 |
정답칸
정답
[
[1, 1, 3, 2]
[3, 4, 5, 3]
[3, 5, 6, 4]
[3, 5, 5, 3]
]
해설
해당 코드는 지뢰찾기 게임과 유사한 코드로 좌표상에서 자신의 주변과 자기자신의 좌표에 1이 있는 개수를 세는 코드이다. 예시에 나열된 표를 (0,0)부터 (3,3)까지 있다고 가정했을 때 (0.0)의 좌표에는 유일하게 (1,1)에 위치한 1이 있으므로 정답칸의 (0,0)에는 1이 기입된다. 마찬가지로 (2,2)의 좌표 주변에는 5개의 1과 (2,2)좌표에 있는 1까지 합쳐서 총 6개의 1이 존재하기 때문에 (2,2)좌표에는 6이 적히는 원리이다.
추후 코드의 x,y,i,j변수의 값에 따른 각 케이스별로 정리해서 업데이트 할 예정이다.
2022 정보처리기사 실기 3회 4번
문제
4. C언어 코드에 출력 값 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void main{
int []result = int[5];
int []arr = [77,32,10,99,50];
for(int i = 0; i < 5; i++) {
result[i] = 1;
for(int j = 0; j < 5; j++) {
if(arr[i] <arr[j]) result[i]++;
}
}
for(int k = 0; k < 5; k++) {
printf(result[k]);
}
}
|
cs |
정답
24513
해설
이 C 언어 코드는 주어진 arr 배열 내 각 요소의 상대적 크기 순위를 계산한다. 배열 내의 각 값에 대해, 그 값보다 큰 모든 값의 수를 세어 result 배열에 저장한다. 이는 각 원소가 배열 내에서 몇 번째로 큰지를 나타낸다.
arr 배열이 [77,32,10,99,50]로 주어졌을 때
- 77은 두 번째로 큰 수이므로 result[0] = 2,
- 32는 네 번째로 큰 수이므로 result[1] = 4,
- 10은 다섯 번째로 큰 수이므로 result[2] = 5,
- 99는 가장 큰 수이므로 result[3] = 1,
- 50은 세 번째로 큰 수이므로 result[4] = 3.
따라서, 이 코드의 출력값은 2 4 5 1 3 이다.
2022 정보처리기사 실기 3회 9번
문제
9. 다음 파이썬 코드에 대한 출력값을 작성하시오.
1
2
3
4
|
TestList = [1,2,3,4,5]
TestList = list(map(lambda num : num + 100, TestList))
print(TestList)
|
cs |
[101,102,103,104,105]
해설
- map(function, iterable): 이 함수는 두 개의 인자를 받는다. 하나는 함수이고, 다른 하나는 반복 가능한 자료형이다.(예: 리스트, 튜플 등). map 함수는 주어진 반복 가능한 자료형의 각 요소에 대해 지정된 함수를 실행한다. 결과는 map 객체로 반환되며, 이는 리스트나 다른 반복 가능한 형태로 변환될 수 있다.
- lambda num: num + 100: 이 부분은 람다 함수, 즉 이름 없는 함수를 정의한다. 여기서 num은 함수의 입력 변수, num + 100은 반환되는 값이다. 람다 함수는 간단한 함수가 필요한 곳에 주로 사용되며, 여기서는 각 요소에 100을 더하는 단순한 계산에 사용된다.
- list(...): 이 코드는 map 객체를 리스트로 변환한다. map 함수의 결과는 직접적으로 리스트가 아니기 때문에, 리스트로 변환하기 위해서는 list() 함수를 사용해야 한다.
결과적으로 이 코드는 TestList 리스트의 각 원소에 100을 더한다. 따라서 출력값은 [101, 102, 103, 104, 105] 가 된다.