| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- colab
- GoogleDrive
- 크롤링 개발
- Python
- Database
- KAKAO
- 인터넷의이해
- 고등학생 대상
- VSCode
- git
- 코딩도장
- OSS
- API
- Spring Boot
- ChatGPT
- suricata
- cloud
- Machine Learning
- Docker
- Powershell
- ICT멘토링
- 국가과제
- Spring
- Github
- Web
- rnn
- Rocky Linux
- LINUX MASTER
- Resnet
- C언어
- Today
- Total
코딩두의 포트폴리오
[2022실기] 3회 본문
1. 다음 C언어로 구현된 프로그램을 분석하여 배열 <mines>의 각 칸에 들어갈 값을 쓰시오.
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;
}
배열 <field>
| 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 |
배열 <mines>
2. 관계대수에 대한 다음 설명에서 괄호 (1~5)에 들어갈 알맞은 용어를 쓰시오.
| - 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다. 관계대수에 사용되는 연산은 다음과 같다. - 합집합(UNION)은 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거하는 연산으로, 사용하는 기호는 ( 1 )이다. - 차집합(DIFFERENCE)은 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산으로, 사용하는 기호는 ( 2 )이다. - 교차곱(CARTESIAN PRODUCT)은 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산으로, 사용하는 기호는 ( 3 )이다. - 프로젝트(PROJECT)는 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산으로, 사용하는 기호는 ( 4 )이다. - 조인(JOIN)은 공통 속성으로 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산올, 사용하는 기호는 ( 5 )이다. |
1. U
2. -
3. X
4. π
5. ⋈
3. 디자인 패턴에 대한 다음 설명에서 괄호(1, 2)에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.
| - ( 1 ) 패턴은 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴으로, 기능과 구현을 두 개의 별도 클래스로 구현한다는 특징이 있다. - ( 2 ) 패턴은 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변화된 상태를 전달하는 패턴으로, 일대다의 의존성을 정의한다. 주로 분산된 시스템 간에 이벤트를 생성,발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다. |
[보기]
| Builder | Factory Method | Adapter | Bridge |
| Facade | Proxy | Observer | Mediator |
1. Bridge
2. Observer
4. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Test {
public static void main(String[] args) {
int result[] = new 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++)
System.out.print(result[k]);
}
}
5. 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 3개의 subnet으로 나누었을 때, 두 번째 네트워크의 브로드캐스트 IP 주소를 10진수 방식으로 쓰시오.
192.168.1.127
/24 -> 255.255.255.0이므로 192.168.1까지는 고정되고 마지막 옥텟으로 계산함
3개의 서브넷으로 나누기 위해서는 최소 2개 비트가 필요함 (00 01 10 11)
두 번째 네트워크는 01이며 IP 범위는 01000000~01111111 -> 64~127
브로드캐스트 IP 주소는 가장 마지막 주소이므로 192.168.1.127
6. 테스트 기법 중 다음과 같이 '평가 점수표'를 미리 정해 놓은 후 각 영역의 경계에 해당하는 입력값을 넣고, 예상되는 출력값이 나오는지 실제 값과 비교하는 명세 기반 테스트 기법을 [보기]에서 찾아 쓰시오.
<평가 점수표>
| 평가점수 | 성적등급 |
| 90~100 | A |
| 80~89 | B |
| 70~79 | C |
| 0~69 | D |
<케이스>
| 테스트 케이스 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 입력값 | -1 | 0 | 69 | 70 | 79 | 80 | 89 | 90 | 100 | 101 |
| 예상 결과값 | 오류 | D | D | C | C | B | B | A | A | 오류 |
| 실제 결과값 | 오류 | D | D | C | C | B | B | A | A | 오류 |
[보기]
| Equivalence Partition | Boundary Value Analysis | Condition Test |
| Cause-Effect Graph | Error Guess | Comparison Test |
| Base Path Test | Loop Test | Data Flow Test |
Boundary Value Analysis
7. 다음과 같이 테이블을 정의하고 튜플을 삽입하였을 때, 각 번호(1, 2)의 SQL문을 실행한 결과를 쓰시오.
CREATE TABLE 부서 (
부서코드 INT PRIMARY KEY,
부서명 VARCHAR(20)
);
CREATE TABLE 직원 (
직원코드 INT PRIMARY KEY,
부서코드 INT,
직원명 VARCHAR(20),
FOREIGN KEY(부서코드) REFERENCES 부서(부서코드)
ON DELETE CASCADE
);
INSERT INTO 부서 VALUES(10, '영업부');
INSERT INTO 부서 VALUES(20, '기획부');
INSERT INTO 부서 VALUES(30, '개발부');
INSERT INTO 직원 VALUES(1001, 10, '이진수');
INSERT INTO 직원 VALUES(1002, 10, '곽연화');
INSERT INTO 직원 VALUES(1003, 20, '김선주');
INSERT INTO 직원 VALUES(1004, 20, '최민수');
INSERT INTO 직원 VALUES(1005, 20, '이윤정');
INSERT INTO 직원 VALUES(1006, 30, '박종일');
INSERT INTO 직원 VALUES(1007, 30, '박미경');
1. SELECT DISTINCT COUNT(부서코드) FROM 직원 WHERE 부서코드 = 20;
2. DELETE FROM 부서 WHERE 부서코드 = 20;
SELECT DISTINCT COOUNT(부서코드) FROM 직원;
<부서>
| 부서코드 | 부서명 |
| 10 | 영업부 |
| 20 | 기획부 |
| 30 | 개발부 |
<직원>
| 직원코드 | 부서코드 | 부서명 |
| 1001 | 10 | 이진수 |
| 1002 | 10 | 곽연화 |
| 1003 | 20 | 김선주 |
| 1004 | 20 | 최민수 |
| 1005 | 20 | 이윤정 |
| 1006 | 30 | 박종일 |
| 1007 | 30 | 박미경 |
1. 3
부서코드 = 20 인 직원
| 직원코드 | 부서코드 |
| 1003 | 20 |
| 1004 | 20 |
| 1005 | 20 |
DISTINCT는 COUNT()와 함께 쓰이면 의미 없음
(행이 1개만 나오기 때문)
2. 4
| 직원코드 | 부서코드 |
| 1001 | 10 |
| 1002 | 10 |
| 1006 | 30 |
| 1007 | 30 |
부서(20)를 삭제하면?
-> 직원 테이블의 부서코드 20을 참조하는 행들은 ON DELETE CASCADE로 인해 자동 삭제됨
8. 다음 설명에서 괄호(1, 2)에 들어갈 알맞은 용어를 쓰시오.
| - ( 1 )은 컴퓨터 보안에 있어서, 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 보안 절차를 깨트리기 위한 비기술적 시스템 침입 수단을 의미한다. - ( 2 )는 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어 있는 대량의 데이터를 의미한다. 미래에 사용될 가능성을 고려하여 저장 공간에서 삭제되지 않고 보곤되어 있으나, 이는 저장 공간의 낭비뿐만 아니라 보안 위험을 초래할 수 있다. |
1. 사회 공학 (Social Engineering)
2. 다크 데이터 (Dark Data)
9. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
a = [1, 2, 3, 4, 5]
a = list(map(lambda num : num + 100, a))
print(a)
[101, 102, 103, 104, 105]
lambda num: num + 100
→ 입력된 숫자(num)에 100을 더해 반환하는 익명 함수
map(함수, 리스트) 형태로 사용되며,
→ 리스트의 모든 요소에 대해 lambda를 적용한다.
map 결과는 map 객체이므로 list()로 다시 리스트로 변환해야 함
10. 다음 설명에 해당하는 알맞은 용어를 쓰시오.
| 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션으로, 방화벽, IDS, IPS, 웹 방화벽, VPN 등에서 발생한 로그 및 보안 이벤트를 통합하여 관리함으로써 비용 및 자원을 절약할 수 있는 특징이 있다. 또한, 보안 솔루션 간의 상호 연동을 통해 종합저인 보안 관리 체계를 수립할 수 있다. |
SIEM (Security Information & Event Management)
11. 다음 제시된 보기 중 형상 관리 도구에 해당하는 것 3가지를 고르시오.
| OLAP | CVS | Ant | Maven |
| Git | Jenkins | Spring | SVN |
CVS, Git, SVN
12. 학생(STUDENT) 테이블에 전기과 학생이 50명, 전산과 학생이 100명, 전자과 학생이 50명이 있다고 할 때, 다음 SQL문의 실행 결과로 표시되는 튜플의 수를 쓰시오. (단, DEPT 필드는 학과를 의미한다)
SELECT DEPT FROM STUDENT;
SELECT DISTINCT DEPT FROM STUDENT;
SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '전산과';
1. 200
2. 3
3. 1
13. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include <stdio.h>
main() {
int s, el = 0;
for (int i = 6; i <= 30; i++) {
s = 0;
for (int j = 1; j <= i / 2; j++)
if (i % j == 0)
s = s + j;
if (s == i)
el++;
}
printf("%d", el);
}
14. 보안 및 보안 위협에 대한 다음 설명에서 괄호(1, 2)에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.
| - ( 1 )은 칩 설계회사인 ARM(Advanced RISC Machine)에서 개발한 기술로, 하나의 프로세서(Processor) 내에 일반 애플리케이션을 처리하는 일반 구역(Normal World)과 보안이 필요한 애플리케이션을 처리하는 보안 구역(Secure World)으로 분할하여 관리하는 하드웨어 기반의 보안 기술이다. - ( 2 )은 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 것으로 URL 하이재킹(Hijacking)이라고도 한다. 유명 사이트들의 도메인을 입력할 때 발생할 수 있는 온갖 도메인 이름을 미리 선정해 놓고 이용자가 모르는 사이에 광고 사이트로 이동하게 만든다. |
[보기]
| Pharming | Tvishing | Trustzone | APT | Typosquatting |
| Hacktivism | Watering Hole | Smurfing | Ransomware | CSRF |
1. Trustzone
2. Typosquatting
15. 다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오.
| ( )는 한 번의 로그인으로 개인이 가입한 모든 사이트를 이용할 수 있게 해주는 시스템을 말한다. 개인의 경우, 사이트에 접속하기 위하여 아이디와 패스워드는 물론 이름, 전화번호 등 개인정보를 각 사이트마다 일일이 기록해야 하던 것이 한 번의 작업으로 끝나므로 불편함이 해소되며, 기업에서는 회원에 대한 통합관리가 가능해 마케팅을 극대화시킬수 있다는 장점이 있다. |
SSO (Single Sign On)
16. 스케줄링에 대한 다음 설명에서 괄호(1~3)에 들어갈 알맞은 용어를 쓰시오.
| - ( 1 )는 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다. 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이지만, 실행 시간이 긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생될 수 있다. - ( 2 )은 시분할 시스템을 위해 고안된 방식으로, 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 시간 할당량 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치된다. 할당되는 시간이 작을 경우 문맥 교환 및 오버헤드가 자주 발생되어 요청된 작업을 신속히 처리할 수 없다. - ( 3 )는 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법으로, 시분할 시스템에 유용하다. 준비상태 큐에 있는 각 프로세스의 실행 시간을 추적하여 보유하고 있어야 하므로 오버헤드가 증가한다. |
1. SJF (Shortest Job First)
2. RR (Round Robin)
3. SRT (Shortest Remaining Time)
17. UML에 대한 다음 설명에서 괄호(1~3)에 들어갈 알맞은 용어를 쓰시오.
'정보처리기사 > 2022 실기' 카테고리의 다른 글
| [2022실기] 2회 (0) | 2025.12.06 |
|---|---|
| [2022실기] 1회 (0) | 2025.12.04 |