정보처리기사

[문제 & 풀이] 정보처리기사 실기 족보_4

김꼬알 2023. 4. 18. 18:05

1. 다음은 자바 코드이다. 출력 결과를 쓰시오.

public class Soojebi{
    public static void main(String args[]){
        System.out.println("" + 1 + 2);
        System.out.println(1 + 2 + "");
    }
}

12

 

 

2. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
void main(){
    char a[7] = "Hello";
    a[3] = '0';
    printf("%s\n", a+1);
}

a = Hel0o__

▷ el0o

 

 

3. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
void main(){
    int a = 1, b = 3;
    switch(++a + b){
    case 3: printf("A");
    case 4: printf("B");
        break; case 5: printf("C");
    default: printf("E");
    }
}

a = 1

b = 3

2 + 3 = 5

▷ CE

 

 

4. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
void main(){
    int i = 2;
    while (--i){
        printf("%d", i);
    }
}

i = 2

▷ 1

 

 

5. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

print((4<<3) < (3<<4))

4 100

3 011

▷ True

 

 

6. 다음은 C 언어 코드이다. 결과를 보고 밑줄 친 곳에 알맞은 코드를 쓰시오.

#include <stdio.h>
int a(int i){return i;}
int b(int i, int j){return i-j;}

void main(){
    int (*p)(int);
    int (pf)(int, int);
    _____1____;
    printf("%d", p(5));
    _____2____;
    printf("%d", pf(5, 4));
}

[출력 결과]
51

▷ 1: p = a / 2: fp = b

 

 

7. 다음은 자바 코드이다. 출력 결과를 쓰시오.

class Parent{
    public Parent(){
        System.out.print("A");
    }
    public void fn(){
        System.out.print("B");
    }
    public void fnA(){
        System.out.print("C");
    }
}
class Child extends Parent{
    public Child(){
        System.out.print("D");
    }
    public void fn(){
        System.out.print("E");
    }
    public void fnB(){
        System.out.print("F");
    }
}
public class Soojebi{
    public static void main(String args[]){
        Child c = new Child();
        c.fn();
        c.fnA();
    }
}

c

▷ ADEC

 

 

8. 다음은 자바 코드이다. 출력 결과를 쓰시오.

class Parent{
    public Parent(){
        System.out.print("A");
    }
    public Parent(int a){
        System.out.print("B");
    }
}
class Child extends Parent{
    public Child(){
        System.out.print("C");
    }
    public Child(int a){
        super(a);
        System.out.print("D");
    }
}
public class Soojebi{
    public static void main(String args[]){
        Parent a = new Parent();
        Parent b = new Child()
        Child c = new Child(5);
    }
}

▷ AACBD

 

 

9. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
void main(){
    if(0.5){
        printf("A");
    }
    else{
        printf("B");
    }
}

▷ A

 

 

10. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
int main(int argc, char *argv[]){
    int arr[2][3] = {1, 2, 3, 4, 5, 6};
    int (*p)[3] = NULL;
    p = arr;
    printf("%d", *(p[0]+4) + *(p[1]+2));
    return 0;
}

arr = 1 2

        3 4

        5 6

p = 1 2 3

*(1+4) + *(2+2) = 6+5 = 11

▷ 11

 

 

11. 다음은 C 언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
int Soojebi(int base, int exp){
    int i, result = 1;
    for(i = 0; i < exp; i++){
        result *= base;
        return result;
    }
}
void main(){
    printf("%d", Soojebi(2, 10));
}

base = 2

exp = 10

i = 0

result = 2

▷ 2

 

 

12. 다음은 자바 코드이다. 출력 결과를 쓰시오.

public class Soojebi{
    public static void main(String args[]){
        int i = 0, j = 0;
        for(int k = 0; k < 3; k++){
            if((++i > 1) && (++j > 1))
                i++;
        }
        System.out.println(i + " " + j);
    }
}

i = 5

j = 3

k = 3

▷ 4 2

 

 

13. 주어진 [학생] 테이블에서 담당간의 이름이 "이"로 시작하는 튜플의 학과 번호를 999로 갱신하는 SQL을 작성하려고 한다. SQL을 작성하시오.

[학생] 테이블

학부 학과번호 입학생수 담당관
정경대학 110 300 이도
공과대학 310 250 이순신
인문대학 120 400 이봉창
정경대학 120 300 김구라

 

▷ UPDATE 학생 SET 학과번호 = 999 WHERE 담당관 LIKE "이%";

 

 

14. 다음 빈칸에 들어갈 용어를 작성하시오.

  • 정규화는 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정으로, 정규화의 목적은 가능한한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다. 기존의 테이블에서 부분 함수적 종속을 제거하여 완전 함수적 종속을 만족하는 정규화 단계는 (         ) (이)다.

▷  2정규화

 

정규화 단계

  • 1정규형(1NF): 원자값으로 구성
  • 2정규형(2NF): 부분 함수적 종속 제거(완전 함수적 종속 관계)
  • 3정규형(3NF): 이행 함수 종속 제거
  • 보이스-코드 정규형(BCNF): 결정자 후보키가 아닌 함수 종속 제거
  • 4정규형(4NF): 다치(다중 값) 종속 제거
  • 5정규형(5NF): 조인 종속 제거

 

 

15~20. 다음은 [직원] 테이블 정보이다. 다음 물음에 답하시오.

[직원] 테이블

사번 이름 직책 부서 급여
001 김철수 차장 마케팅 5000
002 한유리 팀장 전산 4800
003 신짱구 사원 보안 2500
005 이훈이 사원 마케팅 2700

15. DDL을 이용해 테이블 내의 테이터를 전체 삭제하는 쿼리를 작성하시오.

▷ TRUNCATE TABLE 직원;

 

테이블에서 모든 행 삭제

TRUNCATE [TABLE] 테이블명;

 

16. 직책 컬럼을 "직책인덱스" 라는 이름의 인덱스를 만드는 쿼리를 작성하시오.

▷ CREATE INDEX 직책인덱스 ON 직원(직책);

 

인덱스 생성

CREATE INDEX 인덱스명 ON 테이블명(속성명);

 

DDL(데이터 정의어): 크알드트

  • CREATE: 도스테뷰인(도메인, 스키마, 테이블, 뷰, 인덱스) 정의
  • ALTER: 테이블에 대한 정의 변경
  • DROP: 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 계약 조건 등을 제거
  • TRUNCATE: 테이블에서 모든 행 삭제

 

17. [직원] 테이블에서 부서명을 조회하는 쿼리를 작성하시오. (단, 부서명이 중복되어 출력되지 않아야 한다.)

▷ SELECT DISTINCT 부서명 FROM 직원;

 

 

18. 급여가 4000 이상 5000 이하인 사번을 출력하는 쿼리를 작성하시오.(반ㄷ시 BETWEEN을 쓸 것)

▷ SELECT 사번 FROM 직원 WHERE 급여 BETWEEN 4000 AND 5000;

 

 

19. 급여를 많이 받는 사람부터 적게 받는 사람 순서대로 조회하는 쿼리를 작성하시오. (조회 결과는 이름만 출력되어야 함)

▷ SELECT 이름 FROM 직원 ORDER BY 급여 DESC;

 

 

20. [직원] 테이블에서 '차장'이 몇 명인지 조회하는 쿼리를 작성하시오.

▷ SELECT COUNT(*) 직책 FROM 직원 WHERE 직책 = "차장";

 

DML(데이터 조작어): 세인업데

  • SELECT: 테이블에서 튜플 검색
  • INSERT: 기본 테이블에 새로운 튜플을 삽입할 때 사용
    • INSERT INTO 테이블명(속성명, ...) VALUES (데이터, ...);
  • UPDATE: 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)의 내용 변경
    • UPDATE SET 테이블명 SET 속성명 = 데이터 WHERE 조건;
  • DELETE: 기본 테이블에 있는 튜플 중에서 특정 튜플을 삭제
    • DELETE FROM 테이블명 WHERE 조건;