반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

 

알고리즘 - 자바

 

다음 Java 언어의 <코드>와 <입력>을 보고 프로그램을 분석하여 그 실행 결과를 적으시오.

 

<코드>

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n, i, sum = 0;
        n = scan.nextInt();
        
        for (i = 1; i <= n; i++) {
            sum += i;
        }
        
        System.out.printf("%d", sum);
        scan.close();
    }
    
}

 

<입력>

 

5

 

정답

 

15

 

해설

 

1에서 5까지의 합을 구하는 문제입니다. Scanner를 통해 정수 n을 입력받고, for문을 통해 i를 0에서 입력받은 n까지 반복시켜 1씩 증가하는 i의 값을 sum에 순서대로 더한 뒤 마지막에 sum을 출력합니다.

 

for문에서 i는 1, 2, 3, 4, 5 순으로 값을 가지고 sum에는 1, 3, 6, 10, 15가 순서대로 저장되어 최종 값은 15가 됩니다.

 

 

알고리즘 - C언어

 

다음 C 언어의 <코드>를 실행했을 때 6을 입력한 결과 <출력>으로 나타낸 것이다. 프로그램을 분석하여 괄호 (      )에 가장 적합한 코드를 적으시오.

 

<코드>

#include <stdio.h>

main() {
    
    int n, i = 1;
    scanf("%d", &n);
    while(i < 10) {
        printf("%d X %d = %d\n", n, i (      ));
        i++
    }

}

 

<출력>

 

6 X 1 = 6

6 X 2 = 12

6 X 3 = 18

6 X 4 = 24

6 X 5 = 30

6 X 6 = 36

6 X 7 = 42

6 X 8 = 48

6 X 9 = 54

 

정답

 

n * i

 

해설

 

이 문제는 구구단 중 6단을 출력하는 코드에 관한 문제입니다. main 함수에서 첫 줄에 int n, i = 1 로 선언되어 있는데 n에는 문제에서 6이 입력되었다고 지정되어 있습니다. 따라서 while(i < 10)과 while문 마지막 줄 i++에 따라 i는 1 ~ 9까지 증가하게 되는데 <출력> 부분처럼 6단이 출력되려면 n과 i를 곱한 값이 n * i 가 들어가야 합니다.

 

 

데이터베이스

 

SQL과 관련한 다음 설명에서 괄호 (1) ~ (4)에 들어갈 가장 적합한 답을 적으시오.(16점)

 

<지문>

 

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

 

<학부생> 테이블

학부 학과번호 입학생수 담당관
정치대학 100 200 김지성
공과대학 200 250 이지연
인문대학 300 300 김해인
공과대학 400 170 박지민

 

아래는 정규화 과정을 거친 <학부생> 테이블에서 담당관의 이름이 "이"로 시작하는 튜플의 학과번호를 999로 갱신하는 SQL문이다.

 

UPDATE 학부생 (   2   ) (   3   ) = 999 WHERE 담당관 (   4   ) '이%';

 

UPDATE문은 테이블에 있는 튜플의 내용을 갱신할 때 사용하는 명령문으로, DML에 해당한다. 다른 DML로는 INSERT, DELETE가 있으며, 각각 새로운 튜플을 삽입하거나 삭제할 때 사용한다.

 

정답

 

(1) 제2정규화

(2) SET

(3) 학과번호

(4) LIKE

 

해설

 

(1)

 

정규화의 순서는 다음과 같습니다.

 

비정규 릴레이션

→ 도메인 원자값 (제1정규화)

→ 부분 함수 종속 제거 (제2정규화)

→ 이행 함수 종속 제거 (제3정규화)

→ 결정자이면서 후보키가 아닌 것 제거(BCNF)

→ 다치 종속 제거 (제4정규화)

→ 조인 속성 이용 (제5정규화)

 

(2) (3) (4)

 

UPDATE문은 다음과 같이 작성합니다.

 

UPDATE 테이블명 SET 속성 = 값 WHERE 조건;

 

문제처럼 학부생 테이블의 학과번호를 999로 갱신하려면 UPDATE 학부생 SET 학과번호 = 999 WHERE ~생략; 이런 식으로 작성하면 되는데, 이 문제에서는 담당관 이름이 '이'로 시작하는 튜플만 변경하라는 조건이 있으니 WHERE절에 LIKE를 사용하여 UPDATE 학부생 SET 학과번호 = 999 WHERE 담당관 LIKE '이%';로 작성하면 됩니다.

 

LIKE 사용법

 

이름이 '이'로 시작하는 경우 LIKE '이%';

이름이 '이'로 끝나는 경우 LIKE '%이';

이름에 '이'가 포함된 경우 LIKE '%이%';

반응형

+ Recent posts