정처기 실기 23년 2회 기출문제 개념 분석

lakebear·2024년 3월 30일
0
post-thumbnail

아는 부분이 많은데 실수로 틀린게 더 많다!

정처기 실기 23년 2회 기출문제 - 바로가기

가답안 - 바로가기

1번

C언어: 54321 → 43215 로 구현 - printf("%d ", ( n[(i+1)%5]) ));

2번

프로그래밍 - 4620원의 1000원 ,500원,100원 10원 개수 구하기

#include
int main() {
	int m = 4620;
	int a, b, c, d; 
	a = m / 1000;
	b = (m%1000) / 500;
	c = (m%500) / 100;
	d = (m%100) / 10;
	printf("1000원 개수:%d ", a);
	printf("500원 개수:%d ", b);
	printf("100원 개수:%d ", c);
	printf("10원 개수:%d ", d);
}

천원짜리 = m / 1000;
오백원짜리 = (m % 1000) / 500;
백원짜리 = ((m% 1000) % 500) / 100;
십원짜리  = (((m%1000) % 500)%100) / 10;

3번

C언어: 문자열 포인터
[입력] 홍길동 → 김철수 → 박영희
#include
char n[30];
char* getname(){
    printf("입력:");
    gets(n);
    return n;
}
int main() {
    char* n1 = getname();
    char* n2 = getname();
    char* n3 = getname();
    printf("%s ",n1);
    printf("%s ",n2);
    printf("%s ",n3);
    return 0;
}
- 답안:
박영희
박영희
박영희
- 출제: [프로그래밍 언어 - 1.C언어]

test함수를 세번 호출하여 세 개의 문자열을 입력 받고, 각가 test1, test2, test3 포인터 변수에 저장한다.
하지만 teat1, test2, test3 모두 동일한 전역 배열 n의 주소를 가르키고 있다. 
즉, 각 함수 호출 시 배열 n의 내용이 새로 입력받은 값으로 갱신된다. 
결과적으로 test1, test2, test3 모두 마지막으로 입력받은 문자열을 가르키게 된다.

4번

SQL: INSERT문

INSERT INTO 테이블명([속성명1, 속성명2, …]) VALUES (데이터1, 데이터2, … );

답안: INSERT INTO 학생 VALUES(98170823, ‘한국산’, 3, ‘경영학개론’, ‘050-1234-1234’);

또는

INSERT INTO 학생(학번, 이름, 학년, 전공, 번호) VALUES(98170823, ‘한국산’, 3, ‘경영학개론’, ‘050-1234-1234’);

삭제 :DELETE FROM 테이블명 [WHERE 조건]; 
ex) DELETE FROM 사원 
WHERE 부서 = ‘인터넷’;

수정: UPDATE 테이블명 SET 속성명=데이터[, 속성명=데이터, ...] [WHERE 조건];
ex) UPDATE 사원
SET 부서 = ‘기획’, 기본급 = 기본급 + 5
WHERE 이름 = ‘황진이’;

5번

break문 없는 switch~case문 코드

6번

전체 조건식의 참과 거짓 결과에 상관없이 결정 포인트 내에 있는 모든 개별 조건식이 참 한번, 거짓 한번을 모두 갖도록 조합하는 커버리지
- 답안: 조건 커버리지

7번

C언어: 2023에서 4의 배수 개수 구하기
#include
int main(){
	int c=0;
	for(int i=1; i<=2023; i++) {
		if(i%4 == 0) c++;
	}
	printf("%d", c);
}

8번

- 답안: 템퍼 프루핑 
- 참고 : 템퍼 프루핑 또는 템퍼 레지스턴스라고 하는기술은 소프트웨어의 위변조 방지 역공학 기술의 일종으로서, 디지털 콘텐츠의 관련 산업이나 전자상거래 또는 보호해야 할 소프트웨어가 있는 다양한 산업 분야에 적용된다.
템퍼 프루핑 기술은 프로그램에 변조 검증 코드를 삽입하여 소프트웨어가 불법으로 변조된 것이 확인된 경우 해당 소프트웨어의 정상적 작동을 방해한다. 이때 변조 검증 코드의 용도는 변조되었는지를 탐지하고 변조가 탐지되었다면 프로그램이 실행되지 않게 하는 것이다.

디지털 워터마킹은 디지털 콘텐츠에 삽입되어 저작권 확인 및 증명에 이용되기도 하고, 영상의 위변조 판별에도 이용된다. 템퍼 프루핑은 소프트웨어의 위변조 판별에만 적용되는 것이 아니라, 이러한 영상의 위변조 판별, 모바일 단말기의 위변조 판별, 팩스 문서의 위변조 판별 등에도 적용되고 있다.

이러한 템퍼 프루핑은 사용자에 의해 소프트웨어가 수정이 이루어졌는지를 검증하는데, 소프트웨어 내에서의 암호 키의 사용을 보호하기 위해 난독화(Obfuscation) 기법을 함께 사용하기도 한다. 난독화란 코드를 읽기 어렵게 만들어 역공학을 통한 공격을 막는 기술이다.

9번

C언어: stack

isWhat[0] = 5
isWhat[1] = 2
2

isWhat[1] = 4
isWhat[2] = 1
1

isWhat[2] = 3
3
4
isWhat[1]=6
6
5

10번

 데이터베이스 설계 순서
- 답안: ㉣ 요구사항분석 → ㉤ 개념적 설계 → ㉠ 논리적 설계 → ㉢ 물리적 설계 → ㉡ 구현

11번

[1]
- 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
- 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용한다.


[2] 
- 호스트 객체의 내부 상태에 접근할 수 있는 방법을 제공하여 호스트 객체에 연산을 추가할 수 있도록 한다.
- 이 패턴은 보통 합성 구조의 원소들과 상호 작용하는 데 사용되며, 기존 코드를 변경하지 않고 새로운 기능을 추가하는 방법이다.

디자인 패턴
① 객체를 하나만 생성하고 그 객체를 모든 곳에서 참조할 수 있도록 하는 패턴
② 연산을 수행해야할 원소의 클래스를 수정하지 않고도 새로운 연산을 추가 가능하게 하는 패턴
- 답안: ① 싱글톤(Singleton)  ② 비지터(Visitor)
- 출제: [디자인 패턴01]
생성패턴(5개) ->  팩토리메서드, 싱글톤, 추상팩토리, 빌더, 프로토타입
- 객체 인스턴스 생성을 위한 클래스 정의와 객체새성방식의 구조화, 캡슐화 방법 제공 (생빌 프로 팩앱싱)
 
(1) Factory Method(팩토리메서드) : 객체생성을 위한 인터페이스를 따로 정의, 객체를 생성하는 일을 서브클래스가 담당하도록 하는 패턴
(2) SingleTone(싱글톤) : 지정한 클래스의 인스턴스가 반드시 한개만 존재하도록 하는 패턴
(3) Abstract Factory(추상팩토리) : 구체적인 클래스를 지정하지 않고 관련성을 갖는 객체들의 집합을 생성하거나 서로 독집적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공하는 패턴
(4) Builder(빌더)  : 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리해 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴
(5) Prototype(프로토타입) : 원본이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고 견본을 복하새허 새로운 객체를 생성하는 패턴 
구조패턴(7개) -> 어댑터, 브릿지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시
- 다른 기능을 가진 객체간에 협력이 필요할 때 객체들을 조직화하는 방법과 기능을 구현하기 위해 객체를 구성하는 방식을 제공 ( 구 브데 퍼플 프록 컴 어)
 
(1) Adapter(어댑터) : 클래스의 재사용성을 높이기 위해 클래스간의 기능을 변환제공하여 호환성을 확보하는 패턴
(2) Bridge(브릿지) : 인터페이스(API)가 서로다른 클래스를 연결하는 패턴으로 기능의 계층과 구현의 계층을 연결시키는 패턴
(3) Composite(컴포지트) : 복잡한 객체구조를 표현하여 객체집합 속에 또 다른 객체집합을 갖는 패턴
(4) 데코레이터(Decorator) : 새로운 기능이 추가될 때마다 새로운 객체를 만들고, 이전 객체의 기능은 새로운 객체내에서도 그대로 유지, 보장해주는 패턴
(5) 퍼싸드(Facade) : 서브시스템이 복잡할 경우 간단한 인터페이스를 통해 서브시스템의 주요기능을 사용할 수 있는 패턴
(6) 플라이웨이트(Fly weight) : 인스턴스를 가능한 한 공유시켜 불필요한 생성을 하지않도록 하는 패턴
(7) 프록시(Proxy) : 객체접근을 제어하려는 목적으로 인터페이스 역할을 하는 객체를 사용하여 제어하는 패턴
행위패턴(11개) -> 템플릿 메소드, 인터프리터, 반복자, 커맨드, 책임연쇄, 상태, 전략, 중재자, 메멘토, 방문자, 옵저버  
- 객체간의 기능을 분배하는 일과 같은 로직 수행에 주로 이용하여 객체간 연동에 대한 유형을 제공 (행 미인이 템옵 스테 비커 스트 메체)
 
(1) 템플릿메소드(Template method) : 상위클래스에서 처리의 흐름을 정하고 하위클래스에서 구체적인 내용을 재정의
(2) 인터프리터(Interpreter) : 간단한 언어의 문법을 정의하는 방법과 그 언어로 문장을 구성하는 방법, 문장을 해석하는 방법을 제시하는 패턴
(3) 반복자(Iterator) : 접근이 잦은객테에 대해 동일 인터페이스를 사용하도록 하는 패턴, 집합객체 요소들의 내부표현 방식을 공개하지 않고, 순차적으로 접근하는 구조를 제공
(4) 커맨드(Command) : 요청자체를 객체화(캡슐화)하고 매개변수(파라미터)를 추가하여 여러가지 요구사항을 추가할 수 있는패턴
(5) 책임연쇄(Chain of Responsibility) : 요청을 처리할 수 있는 기회를 하나 이상의 객체에 부여함으로써 객체간의 결합도를 없애려는 패턴, 각 객체들이 고리로 묶여있어 요청이 해결될 때까지 고리를 따라 책임이 넘어감
(6) 상태(State) : 상태를 일반적인 데이터 변수로 두지 않고 객체로 만들어 그 상태에 따른 행동들을 분리한 패턴
(7) 전략(Strategy) : 상황에 따라 알고리즘을 변화할 필요가 있을 때 , 각 알고리즘 클래스들을 공통된 인터페이스에 맞게 구현하여 다형성을 활용하는 패턴
(8) 중재자(Mediator) : 중재자를 통해 한 집합에 속해있는 객체들의 상호작용을 캡슐화하는 패턴
(9) 메멘토(Memento) : 어떤 시점에서의 객체상태를 저장해두었다가 필요시 객체를 그 시점의 상태로 되돌리는 패턴
(10) 방문자(Visitor) : 데이터구조안을 돌아다니는 주체인 '방문자(Observer)'를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡김으로서 처리기능 분리
(11) 옵저버(Observer) : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 통지되고 필요시 자동으로 내용이 갱신되는 패턴

키워드

생성패턴: 객체 생성 캡슐화 유연화
추상 팩토리: 객체 생성 코드가 상위 클래스에
팩토리 메소드: 하위 클래서에서  구체화
빌더: 분리된 인스턴스 조합
싱글톤: 객체 하나만 생상

구조패턴: 복잡한 구조의 시스템 개발에 필요
어댑터: 서로 일치하지 않은 인터페이스를 변환
브릿지: 독립적 확장
컴죄트: 트리 구조 구성
퍼사드: wrapper 객체

행위패턴: 상호 작용이나 책임 분배에 대한 정의 결합도 최소화
책임 연쇄: 연결되어 책임
Command: 로그 기곩
인터프리터: 맞춤법 검사, 문법 자체를 캡슐화
반복자: 접근이 잦은 객체는 동일한 인터페이스 사용
Memeto: 해당 위치로 돌림
상태: 객체 상태에 다르게 처리
전략: 알고리즘 상호 교환
방문자: 필요할때만 클래스 방문

12번

( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다.
선형블록부호 및 순회부호에 속에 속한다.

( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.

( 3 ) 은/는 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나 기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종이다.

공격자는 신뢰할 수 있는 인물로 가장한 다음 가짜 청구서의 지불을 요청하거나 다른 사기에서 사용할 중요한 데이터를 요구한다.

( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.

( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.
 패리티 비트 ?
- 답안: ① ㉧ hamming ② ㉠ FEC(전진오류수정 방식)  ③ ㉢ BEC(비즈니스 전자 메일)  ④ ㉤ parity ⑤ ㉡ CRC
- 기타: 나머지 보기 - ㉣ NAK, ㉥ BCD, ㉦ MD5
오류 검출 방식

1) 패리티 검사 Parity Check

전송비트에 1비트의 패리티 비트(검사비트)를 추가하여 에러발생 유무만 판별
홀수 패리티 검사를 한다면 1의 수가 홀 수 여야 함
짝수 수직 패리티 검사를 블록 합 검사 Block Sum Check 라고 함

2) 순환 중복 검사 CRC, Cyclic Redundancy Check
다항식 코드를 사용하여 에러 발생 유무만 판별
집단오류 검출 가능, 검출률이 높아 HDLC프레임의 FCS(프레임검사순서필드)에 사용

3) 블록 합 검사 Block Sum Check
블록의 맨 마지막에 수평방향으로 패리티 비트를 부여하여 에러 발생 유무만 판별
수평패리티 체크, 세로중복검사 LRC, Longitudinal redundancy check 라고도 함

4) 해밍 코드 Hamming code
수신측에서 직접 자기 정정 부호의 하나로 오류를 검출하고 수정까지 함
1Bit의 오류만 수정가능
해밍거리 Hamming Distance : 송,수신 데이터의 각 대응 비트가 서로다른 비트 의 수

13번

다음은 HDLC 프로토콜에 대한 설명이다. 보기 안에 알맞는 답을 골라 작성하시오.
 
( 1 ) 프레임은 Seq, Next, P/F의 필드를 가진다. 또한 맨 처음 비트를 0으로 가진다. Seq는 송신용 순서번호를 가지고 있다. Next는 응답용 순서번호를 가진다. P/F는 P가 1로 설정된 경우 주국에서 종국에 데이터 전송을 허용하는 것을 의미하고 F가 1로 설정된 경우 종국에서 주국으로 데이터 전송을 하는 것을 의미한다.

( 2 ) 프레임은 맨 앞의 필드가 1로 되어 있어 정보 프레임이 아니라는 것을 나타내고 다음 비트가 0이 나와있다. Type의 경우에는 2비트를 가지고 있어 4가지의 종류로 나누어진다.  데이터를 보내는 역할이 아니라 응답의 기능을 수행하므로 Seq에 대한 값은 필요가 없고 다음 프레임을 요구하는 Next만 존재한다.

( 3 ) 프레임은 순서 번호가 없는 프레임을 의미한다. 첫 번째 비트와 두 번째 비트가 모두 1로 설정되어 있다. 여러 종류를 가지고 있는데 Type의 2비트와 Modifier의 3비트를 합쳐 5비트를 통해 종류를 나눈다.

( 4 ) 은/는 두 호스트 모두 혼합국으로 동작한다. 양쪽에서 명령과 응답을 전송할 수 있다.

( 5 ) 은/는 불균형 모드로 주국의 허락 없이 종국에서 데이터를 전송할 수 있다

- 답안: ① 정보  ② 감독  ③ 비번호  ④ 비동기 균형  ⑤ 비동기 응답
- 기타: 나머지 보기 - 릴레이, 양방향 응답, 연결 제어, 동기 균형, 익명, 동기 응답

14번

JAVA언어: String, new String
class Gisafirst {
    public static void main(String[] args) {
        String str1 = "Programming"; // true or false
        String str2 = "Programming";
        String str3 = new String("Programming");
        System.out.println(str1==str2);
        System.out.println(str1==str3);
        System.out.println(str1.equals(str3));
        System.out.println(str2.equals(str3));
    }
}
- 답안:
true
false
true
true

15번

대칭키, 비대칭키 구분
- 답안: ① 대칭키: des,aes,aria,seed  ② 비대칭키: ecc,rsa
- 출제: [보안01 – 4.암호화]
- 기타: 보기에서 고름

16번

- ( ) 란 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것이다.
- 키에 대한 ( ) 값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가한다.
- ( ) 값 자체를 index로 사용하기 때문에 평군 시간복잡도가 O(1) 로 매우 빠르다
- ( ) 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
- ( ) 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다.

. 단방향 암호화에 사용되는 함수
- 답안: 해시 또는 해싱
- 출제: [보안01 – 4.암호화]

17번

SQL: DROP VIEW 
뷰를 삭제, 연쇄적으로 삭제
- 답안: CASCADE

- CASCADE : 삭제할 요소를 참조하는 다른 모든 개체를 함께 삭제한다. 
                  즉 Main Table의 데이터 삭제 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거 취소

18번

C언어: 선택 정렬(오름차순) - if(E[i] ( ① ) E[j])
#include
int main() {
    int E[] = {64, 25, 12, 22, 11};
    int n = sizeof(E) / sizeof(E[0]);
    int i = 0;
    do {
        int j = i + 1;
        do {
            if (E[i] > E[j]) {
                int tmp = E[i];
                E[i] = E[j];
                E[j] = tmp;
            }
            j++;
        } while (j < n);
    	i++;
    } while (i < n-1);
    for(int i=0; i<=4; i++)
        printf("%d ", E[i]);
}
- 답안: >
- 출제: [프로그래밍 언어 - 1.C언어]

19번

Python언어: 슬라이싱

[부터:전까지]

20번

하향식, 상향식
- 답안 : ① 스텁  ② 드라이버
- 출제: [테스트 수행 및 결함 조치02 – 6.통합 테스트]

하스/상드
하향식 스텁 / 상향식 드라이'버'
profile
https://lakedata.tistory.com 블로그 이전

0개의 댓글