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;
}
U - X π ⋈
* 순수 관계 연산자
셀렉트 : σ
프로젝트 : π
조인 : ▷◁
디비전 : ÷
일반 집합 연산자 : 합교차카(∪∩ - X)
순수 관계 연산자 : 셀프조디(σ π ⋈ ÷)
디자인 패턴
( Bridge )은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다.
구현뿐 아니라 추상화도 독립적 변경이 필요할 때 ( Bridge ) 패턴을 사용한다.
기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며,
새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.
( Observer )은/는 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다.
일대다 관계를 가지며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Observer)해야 할 때 이용한다.
void main{
int []result = int[5]; //크기 5 정수형 배열 result 생성
int []arr = [77,32,10,99,50];
for(int i = 0; i < 5; i++) { // 0~4까지 총 5번 반복
result[i] = 1; //result 배열 = [1, 1, 1, 1, 1]
for(int j = 0; j < 5; j++) {
if(arr[i] <arr[j]) result[i]++; //arr배열의 i번째 인덱스값보다 j번째 값이 더 클 경우 result[i] 인덱스에 1추가
}
}
for(int k = 0; k < 5; k++) { //계산완료된 result 배열 출력(원소별로, 줄넘김 없으므로 연속해서 값만 출력된다.
printf(result[k]);
}
}
arr i번째 인덱스에 있는 값외에 i인덱스 값보다 큰 값 갯수만큼 +1
답: 24513
192.168.1.0/24인 네트워크를 FLSM 4개로 분할하였다. 두번째 네트워크 브로드캐스드 IP를 10진수로 변환한 값을 작성하시오.
4개 분할이니까 개당 네트워크수 64/
0 ~ 63 / 64 ~ 127 / 128 ~ 191 / 192 ~ 255
2번째 네트워크 64~127 / 브로드 캐스트는 마지막 127
다음과 같이 점수에 따른 금액을 출력하는 알고리즘이 있다. 테스트 입력값을 보고 이와 같은 테스트의 명칭을 적으시오.
[입출력]
점수: 90~100 → 금액: 700만원
점수: 80~89 → 금액: 500만원
점수: 70~79 → 금액: 300만원
점수: 0~69 → 금액: 0만원
[테스트 입력값]
-1, 0, 1, 69, 70, 71, 79, 80, 81, 89, 90, 91, 99, 100, 101
답: Boundary Value Analysis (경계값 분석)
출처: 수제비
insert into 부서 (부서코드, 부서명) value ('10', '영업부'),
('20', '기획부'), ('10', '개발부');
insert into 직원 (직원코드, 부서코드) value ('1000', '10');
insert into 직원 (직원코드, 부서코드) value ('2000', '10');
insert into 직원 (직원코드, 부서코드) value ('3000', '10');
insert into 직원 (직원코드, 부서코드) value ('4000', '20');
insert into 직원 (직원코드, 부서코드) value ('5000', '20');
insert into 직원 (직원코드, 부서코드) value ('6000', '30');
insert into 직원 (직원코드, 부서코드) value ('7000', '30');
SELECT DISTINCT COUNT(직원코드) FROM 직원 WHERE 부서코드 = '20';
DELETE FROM 부서 WHERE 부서코드 = '20';
SELECT DISTINCT COUNT(직원코드) FROM 직원;
답:
2
7
직원, 부서 테이블이 관련이 없다고 가정
( 사회공학 ) 은/는 보안학적 측면에서 기술적인 방법이 아닌 사람들간의 기본적인 신뢰를 기반으로 사람을 속여 비밀 정보를 획득하는 기법이다.
( 다크 데이터 ) 은/는 빅데이터(Big Data)와 비슷하면서도 구조화돼 있지 않고, 더는 사용하지 않는 ‘죽은’ 데이터를 의미한다. 일반적으로 정보를 수집해 저장한 이후 분석이나 특별한 목적을 위해 활용하는 데이터가 아니며, 저장공간만 차지하고 이러한 이유로 심각한 보안 위험을 초래할 수 있다.
다음 파이썬 코드에 대한 출력값을 작성하시오.
TestList = [1,2,3,4,5]
TestList = list(map(lambda num : num + 100, TestList))
print(TestList)
답: [101,102,103,104,105]
map 함수, lambda 함수
map(함수, 입력들)
lambda 매개변수 : 표현식
( SIEM )은/는 머신러닝 기술을 이용하여 IT 시스템에서 발생하는 대량의 로그를 통합관리 및 분석하여 사전에 위협에 대응하는 보안 솔루션이다. 서로 다른 기종의 보안솔루션 로그 및 이벤트를 중앙에서 통합 수집하여 분석할 수 있으며, 네트워크 상태의 monitoring 및 이상징후를 미리 감지할 수 있다.
SIEM은 SIM(보안 정보 관리)과 SEM(보안 이벤트 관리)의 기능을 하나의 보안 관리 시스템으로 통합한 솔루션
다음 보기 중 형상 관리 도구에 해당하는 것을 모두 고르시오.
ATM, CVS, OLAP, DDOS, SVN, Cyber Kill Chain, OLTP, Git
답: CVS, SVN, Git
형상관리 : 소프트웨어 개발 프로세스 각 단계에서 소프트웨어의 변경점을 체계적으로 관리하는 일련의 활동
ATM(Asynchronous Transfer Mode) : 비동기 전달 방식
CVS(Concurrent Versions System, 동치 분할 시스템)
- 개발과정에서 사용하는 파일들의 변경 명세를 관리하기 위한 시스템
OLAP(Online Analytical Processing, 온라인 분석 처리)
- 대용량 데이터를 다차원 분석하기 위한 프로그램
DDOS(Distributed Denial of Service, 분산 서비스 거부)
- 처리할 수 있는 용량을 초과하는 통신 요청과 데이터를 표적 장치의 IP 주소로 보내어 온라인 서비스 중단을 시도하는 사이버 공격의 한 형태
SVN(Subversion)
- CVS의 단점을 보완하여 만들어진 형상관리도구
Cyber Kill Chain
- 공격자의 입장에서 사이버 공격 활동을 파악, 분석해 공격 단계 별로 조직에게 가해지는 위협 요소를 제거하거나 완화하자는 것
OLTP(Online Transaction Processing)< - > OLAP
- 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위작업을 처리하는 방식을 말한다
Git
- 소스코드를 여러 개발 PC와 저장소에 분산하여 자장할 수 있음
STUDENT 테이블에서 컴퓨터과 학생 50명, 전기과 학생 100명, 인터넷과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는?
(단, DEPT 칼럼은 학과명이다.)
1) SELECT DEPT FROM STUDENT;
2) SELECT DISTINCT DEPT FROM STUDENT;
3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '인터넷과';
답
1) 200
2) 3
3) 1
튜카: 튜플(행) = 카디널리티 = 행 = 레코드 = 줄
DISTINCT COUNT(A) => 중복무시 A개수
COUNT (DISTINCT A) => 중복제외 A개수
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);
6이상 30이하의 완전수 찾기
6 == 1 + 2 + 3
28 == 1 + 2 + 4 + 7 + 14
( Trustzone )은/는 프로세서(processor) 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 하드웨어 기반의 보안 기술로 프로세서(processor) 안에 독립적인 보안 구역을 별도로 하여, 중요한 정보를 보호하는 하드웨어 기반의 보안 기술이다.
( (타이포스쿼팅)typosquatting )은/는 사용자들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 유사한 유명 도메인을 미리 등록하는 일로 URL 하이재킹(hijacking)이라고도 한다.
( SSO / Single Sign On /싱글 사인 온 )은/는 여러 개의 사이트에서
한번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속하여 이용하는 방법을 말한다.
일반적으로 서로 다른 시스템 및 사이트에서 각각의 사용자 정보를 관리하게 되는데
이때 하나의 사용자 정보를 기반으로 여러 시스템을 하나의 통합 인증을 사용하게 하는 것을 말한다.
즉 하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지
확인하고 있으면 로그인 처리를 하도록 하고,
없는 경우 다시 통합 인증을 할 수 있도록 만드는 것을 의미한다.
하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지 확인하고 있으면 로그인 처리를 하도록 하고, 없는 경우 다시 통합 인증을 할 수 있도록 만드는 것을 의미
답:
FCFS
SJF
RR (라운드 로빈)
SRT
FCFS: First-Come First-Served
SJF: Shortest Job First
RR: Round Robin
SRT: Shortest Remaining Time
📘 선점형 스케줄링 알고리즘의 유형
라운드 로빈 : 같은 크기의 CPU를 할당
SRT : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고 남은 처리 시간이 짧다고 판단되면 언제라도 프로세스가 선점
다단계 큐 : 작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점
다단계 피드백 큐 : 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU시간 할당량 부여
🐥 SMMR
== Show Me the Money 다음 Round 진출!
📘 비선점형 스케줄링 알고리즘의 유형
우선순위 : 우선순위에 따라 할당
기한부 : 작업들이 명시된 시간이나 기한 내에 완료
FCFS : 프로세스가 대기 큐에 도착한 순서에 따라 할당
SJF : 프로세그가 도착하는 시점에 따라 가장 작은 서비스 시간을 갖는 프로세스가 점유
HRN : 대기중인 프로세스 중 현재 응답률이 가장 높은 것을 선택
🐥 우기 HFS
== 우리 기업은 홈 패밀리 서비스(HFS)를 제공한다.
다음은 UML에 관한 설명이다. 괄호안에 알맞는 답을 작성하시오.
UML은 통합 모델링 언어로써, 시스템을 모델로 표현해주는 대표적인 모델링 언어이다.
구성 요소로는 사물, ( 관계 ), 다이어그램으로 이루어져 있으며, 구조 다이어그램 중, ( 클래스 ) 다이어그램은 시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램이다. 또한 UML 모델링에서 ( 인터페이스 )은/는 클래스와 같은 기타 모델 요소 또는 컴포넌트가 구현해야 하는 오퍼레이션 세트를 정의하는 모델 요소이다.
#사관다 - 사물, 관계, 다이어그램
#클객컴 배복패 - 클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지
UML 다이어그램
구조적 다이어그램(=정적 다이어그램) => 클객 컴배 복패
클래스: 클래스의 속성 및 연산과 클래스 간 정적 관계를 표현한 다이어그램
객체 : 클래스에 속한 사물(객체)를 즉, 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현한 다이어그램
컴포넌트: 컴포넌트와 그들 사이의 의존 관계
배치(Deployment): 컴포넌트 사이의 종속성, 물리적 요소들의 위치
복합체 구조(Composite Structure): 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램
패키지: 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계, 서로 다른 패키지들 사이의 의존 관계 표현
행위적 다이어그램(=동적 다이어그램) => 유시커 상활타
유스케이스: 시스템이 제공하고 있는 기능 관련된 외부 요소를 사용자의 관점에서 표현
시퀀스(Sequence): 객체 간 상호작용을 시간적 개념을 중심으로 메시지 흐름으로 표현
커뮤니케이션: 동작에 참여하는 객체들이 주고받는 메시지, 객체 간의 연관
상태(State): 상호작용에 따라 상태가 어떻게 변화하는지
활동(Activity): 어떤 기능을 수행하는지, 객체의 처리 로직, 조건에 따른 처리의 흐름
타이밍: 객체 상태 변화와 시간 제약을 명시적으로 표현
다음은 E-R다이어그램의 표기 방법이다. 각 칸에 들어갈 알맞은 답을 골라 쓰시오.
답:
A 개체 타입
B 약한 개체 타입
C 관계 타입
D 약한 관계 타입
E 속성
F 키 속성
G 다중값 속성
* 개체-관계 다이어그램 기호
개체 : ㅁ
관계 : ◇
속성 : Ο
다중 값 속성 : ◎
관계 속성 연결 : -
다음 자바 코드에 대한 출력 값을 작성하시오.
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]);
}
}
답:0123
tempArr[0] = 0, tempArr[1] = 1, tempArr[2] = 2, tempArr[3] = 3
다음 자바 코드에 대한 출력 값을 작성하시오.
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);
}
답: 993
999에 제일 가까우면서 - 3의 배수&& 짝수 아님