본문 바로가기
일상/자기계발&자기개발

[#정보처리기사] 23년 1회 문제

by 스토리울음 2025. 4. 9.

C언어

문자열 배열과 포인터

#include 

int main(){

    char a[] = "Art";
    char* p = NULL;
    p = a;

    printf("%s\n", a);
    printf("%c\n", *p);
    printf("%c\n", *a);
    printf("%s\n", p);

    for(int i = 0; a[i] != '\0'; i++)
    printf("%c", a[i]);

}

포인터

#include 

int main(){

    char* a = "qwer";
    char* b = "qwtety";

    for(int i = 0; a[i] != '\0' ; i++){
        for(int j = 0; b[j] != '\0'; j++){
            if(a[i] == b[j]) printf("%c", a[i]);
        }
    }

}

이진수를 십진수로 변환

#include 

int main() { 
    int input = 101110;
    int di = 1;
    int sum = 0;

    while (1) {

        if (input == 0) break;
        else {

          sum = sum + (input (a)(b)) * di;
             di = di * 2;
             input = input / 10; 
        }
    }

    printf("%d", sum);

    return 0;
}

버블정렬코드

#include 
void swap(int *a, int idx1, int idx2) {
 int t= a[idx1];
 a[idx1] = a[idx2];
 a[(    ①    )] = t;
}

void  Usort(int *a, int len) {
  for(int i = 0; i < len - 1; i++) 
     for(int j = 0; j < len - 1 - i; j++)
        if(a[j] > a[j+1])
            swap(a,j,j+1);
}

void main(){
 int a[] = {85, 75, 50, 100, 95};
 int nx = 5;
 Usort(a, (    ②    ));
}

JAVA

STATIC의 이해

class Static{
    public int a = 20;
    static int b = 0;   
}

public class Test{
    public static void main(String[] args) {
        int  a = 10;
        Static.b = a;
        Static st = new Static();

        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}

생성자, 오버라이딩, 중복정의, 추상 클래스

abstact class Vehicle {
    String name;
    abstract public String getName(String val);

    public String getName() {
            return "Vehicle name: " + name;
    }
}

class Car extends Vehicle {
    public Car(String val) {
            name=super.name=val;
    }

    public String getName(String val) {
            return "Car name:" + val;
    }

    public String getName(byte val[]) {
            return "Car name:" + val;
    }
}


public class Main {
    public static void main(String[] args) {
    Vehicle obj = new Car("Spark");
    System.out.println(obj.getName());
    }
}

생성자와 상속

class Parent {
    int x = 100;
    Parent() {
        this(500);
    }

    Parent(int x) {
        this.x = x;
    }

    int getX() {
        return x;
    }
}

class Child extends Parent {
    int x = 4000;
    Child() {
        this(5000);
    }

    Child(int x) {
        this.x = x;
    }
}

public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}

Python

파이썬, 자료형, add, remove, update 메서드

a = {'한국', '중국', '일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩', '한국', '태국'})
print(a)

SQL

DELETE 문법

[학생] 테이블에서 학생 이름이 '민수'인 튜플을 삭제하는 쿼리를 작성하시오.

조건
- 컬럼의 값이 문자열일 경우 작은 따옴표 ('  ')를 표시하시오.
- SQL 마지막에 세미콜론(;)은 표기하지 않아도 관계 없습니다.

 

SELECT 문

다음 성적 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수' 를 검색하고자 한다. [조건]을 참고하여 적합한 SQL문을 작성하시오.

[조건] 
- WHERE사용하지 말아야 한다.
- SELECT절에 별칭을 사용하여 작성해야 한다.
- SQL 구문 마지막에 세미콜론(;)은 생락 가능하다.
- 반드시 GROUP BY와 HAVING 을 사용해야 한다.
- 집계 함수를 사용해야 한다.

 

개념

AJAX

(   )은/는 비동기적인 웹 애플리케이션의 제작을 위해 JavaScript와 XML을 이용한 비동기적 정보 교환 기법이다.

(   )은/는 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 
보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다.

(   )은/는 Google Map과 Google pages에서 사용한 기술에 기반하여 제작되었다.

가상회선과 데이터그램


|(   )|
- 회선교환 방식과 데이터그램 방식의 장점을 결합한 통신 기술이다.  - 처음 패킷으로 최적의 경로로 고정하면 고정되면 그 다음은 패킷으로 나누어 고속으로 전송할 수 있다.  
- 통신기술에는 ATM이 있으며, 정해진 시간 안이나 다음의 데이터 연속으로 보낼 때 적합하다.
|(   )|
- 패킷교환 방식으로 동작하면서 IP 주소를 사용하는 인터넷을 의미한다.  
- 각 지점전송. 미리 정해진 경로 없이 독립적으로 처리하여 효율하는 방식이다. 
- 높은 효율성이 고장 시 모든 패킷을 잃어버리는 가상회선과 달리, 그 경로를 피해 재전송할 수 있으므로 다중 신뢰가 가능하다.
- 짧은 메시지의 패킷으로 전송할 때 효과적이고 적절한 기능이 필요하다.

L2TP(VPN 연관 보안 프로토콜)

○ 2 계층(데이터링크 계층)에서 구현되는 터널링 기술 중 하나
○ L2F와 PPTP가 결합된 프로토콜로 VPN과 인터넷 서비스 제공자(ISP)가 이용
○ IPsec을 함께 사용하면 PPTP보다 훨씬 안전하지만 보안보다 익명화에 더 적합

SSH (원격 접속 및 파일 전송 프로토콜)

○ 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또는 이를 이용한 응용 프로그램이다.

○ 데이터 암호화와 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신할 수 있다.

○ 키(Key)를 통한 인증 방법으로 사용하려면 사전에  클라이언트의 공개키를 서버에 등록해야 한다.

○기본적으로는 22번 포트를 사용한다.

악성코드 종류


|**(1)**|
- 감염된 컴퓨터 시스템에서 스스로 복제해 다른 컴퓨터로 복사본을 확산시킬 수 있는 악성 프로그램이다.

- 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않으며, 파일 전송 기능을 착취하도록 설계된다.

- 자가 복제 및 네트워크를 통한 전파도 가능하다.

|**(2)**|
- 정상적인 프로그램으로 가장하여 사용자가 직접 컴퓨터에 설치하도록 위장하며, 백도어를 만들어 공격자가 침입할 수 있도록 만들거나 시스템을 파괴한다. 

- 정상적인 프로그램으로 위장하여 시작부터 끝까지 램에 상주하며, 시스템 내부 정보를 저장하여 공격자에게 전달하는 프로그램이다.

- 좀비 PC처럼 내부정보 유출뿐만 아니라 컨트롤까지 가능한 종류가 있고, 단순히 내부 데이터만 유출할 수 있는 타입의 트로이 목마가 있다.

- 감염된 후엔 스스로를 복제하는 능력은 없다.
|**(3)**|
- 대상(정상파일)을 감염시키는 형태로 실행되며. 감염시킬 대상이 존재하지 않을 때에는 실행되지 않으며 다른 정상파일로의 자기 복제 기능이 있다.

- 컴퓨터 시스템에 침입해 프로그램에 기생하며 시스템을 변경하거나 사용할 수 없도록 만드는 악성코드 
- 
- 네트워크를 통해 전파되지 않으며 방식 및 위치에 따라 여러 형태로 나뉨

ICMP(프로토콜)

(    )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.

(    ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.

(    ) 을/를 이용한 공격에는 (    ) Flooding가 있는데 ping 명령어를 통한 (     ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.

proxy (디자인패턴)

(   )은/는 복잡한 시스템을 개발하기 쉽도록 클래스나 객체을 조합하는 패턴에 속하며,
대리라는 이름으로도 불린다. 내부에서는 객체 간의 복잡한 관계를 단순하게 정리해 주고,
외부에서는 객체의 세부인 내용을 숨기는 역할을 한다.

릴레이션 용어

(   )
릴레이션을 구성하는 각각의 행, 파일구조는 레코드
(   )
데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 값을 가진 것으로, 실제 값을 가진 튜플을 의미
(   )
튜플의 개수

○도메인  ○차수  ○속성  ○튜플
○디그리  ○카디널리티  ○릴레이션 스키마  ○릴레이션 인스턴스

스키마



|**(1) 스키마**|
- 사용자나 응용 프로그래머가 개념의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한다. 

- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있기 때문에 서브 스키마라고도 한다.  

- 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있다.  

- 하나의 외부 스키마는 여러개의 응용 프로그램을 사용자 간 공유할 수 있다.

|**(2) 스키마**|
- 데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스로 하나만 존재한다.

- 개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.

- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것이다. 

- 기관이나 조직의 관점에서 데이터베이스를 정의한 것이다.

|**(3) 스키마**|
- 물리적 저장장치 입장에서 데이터가 저장되는 방법을 기술한 것이다.  

- 실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의한다.

- 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유무등을 나타낸다. 

- 시스템 프로그래머나 시스템 설계자가 관리한다.

분기커버리지

다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.