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

 

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

 

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

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

developer-rooney.tistory.com

 

알고리즘 - Java

 

다음 Java 프로그램을 실행했을 때 나오는 출력을 쓰시오.(5점)

 

public class Exam {

    static void initFunc(int[][] a) {
        for(int i = 0; i < a.length; i++) {
            for(int j = 0; j < a[i].length; j++) {
                a[i][j] = 0;
            }
        }
    }

    static void fillFunc(int[][] a) {
        int n = 1;
        for(int i = 0; a.length; i++) {
            for(int j = i; j < a[i].length; j++) {
                a[i][j] = n;
                n = n + 1;
            }
        }
    }
    
    static void printFunc(int[][] a) {
        for(int i = 0; i < a.length; i++) {
            for(int j = 0; j < a[i].length; j++) {
                if(a[i][j] != 0) {
                    System.out.printf("%3d", a[i][j]);
                }else {
                    System.out.print("   ");
                }
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        int[][] M = new int[5][5];
        
        initFunc(M);
        fillFunc(M);
        printFunc(M);
    }
}

 

정답 

 

1  2  3  4  5

   6  7  8  9

      10 11 12

          13 14

              15

 

해설

 

계단을 출력하는 문제입니다. main 메소드에서 실행된 메소드들을 먼저 살펴보고 위에서 어떻게 정의되었는지 살펴봅니다. 모든 메소드에는 매개변수로 2차원 배열을 받고 있고, 반환 값은 없으니 실행만 하면 됩니다.

 

initFunc는 2차원 배열 값을 모두 0으로 초기화합니다.

 

fillFunc는 2중 for문을 사용하여 정수 n을 1씩 증가시키며 넣어주는데 바깥 for문에서는 정수 i는 0부터 a.length 전까지, 즉 4까지 반복되고, 안쪽 for문에서는 정수 j가 i의 값부터 a[i].length까지 반복하기 때문에 i가 0일 때는 0부터, 1일 때는 1부터 .. 4까지 반복되며 1씩 증가하는 n값을 넣어줍니다.

 

마지막 메소드 printFunc는 매개변수로 들어온 2차원 배열을 출력해주는 역할을 하니 위의 정답처럼 적으시면 됩니다.

* 문제에서 "%3d"가 있는데 시험에서는 띄어쓰기를 확인 안 하기 때문에 굳이 세 칸을 정확하게 확보할 필요가 없습니다.

 

 

알고리즘 - C언어

 

다음 C언어 프로그램을 실행할 경우, 아래와 같이 출력된다. C언어 프로그램상의 빈 줄에 들어갈 적절한 코드를 입력하시오.

 

<출력결과>

 

5

11

23

47

95

 

<코드>

#include <stdio.h>

void main() {
    recursive(5);
}

int recursive(int n) {

    int i;
    if (n < 1) {
        return 2;
    }else {
        i = ( 2 * ________ ) + 1;
        printf("%d\n", i);
        return i;
    }

}

정답

 

recursive(n-1)

 

해설

 

재귀함수에 관한 문제입니다. 재귀함수 관련 풀이는 하단 링크의 2017년도 문제를 참고해 주세요.

 

정보처리산업기사 실기 2017년 제1회 기출문제 정리

알고리즘과 DB 일부 문제만 정리하였습니다. 최근 기출 문제(2019년부터)는 하단 링크를 참고해 주세요. 정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회) 정보처리

developer-rooney.tistory.com

 

 

데이터베이스

 

1. SQL은 관계 데이터베이스에서 사용되는 대표적인 언어로 SQL에는 크게 DDL, DML, DCL로 나누어진다. 아래 보기에 나열되어 있는 명령어 중 DML과 DDL에 해당하는 명령어를 선택하시오.

 

<보기>

CREATE, SELECT, ALTER, INSERT, COMMIT, DELETE, GRANT, ROLLBACK, UPDATE, REVOKE, DROP

 

1) DML :

2) DDL :

 

정답

 

1) DML : SELECT, INSERT, DELETE, UPDATE 

2) DDL : CREATE, ALTER, DROP

 

해설

 

정의, 조작, 제어어를 구분하는 문제입니다.

 

 

2. 다음 데이터베이스와 관련된 설명과 부합하는 빈 칸 (1) ~ (5)에 알맞은 용어를 적으시오.(15점)

 

관계 데이터 모델은 자료의 저장 형태를 2차원 구조의 표(테이블)로 표현하는 방법을 말한다. 관계 데이터 모델에서 (1)(은)는 속성들로 구성된 표 구조로 표현된다. (1)(을)를 구성하는 각 열을 속성이라고 하고 (1)의 한 행을 구성하는 속성들의 집합을 튜플이라고 한다. 하나의 속성이 가질 수 있는 값의 범위를 (2)(이)라 하며, (2)(은)(는) (1)(을)를 만들 때 속성의 값으로 올 수 있는 범위를 제한함으로써 범위 외의 값은 올 수 없도록 해야 한다. 예를 들어, '학년' 속성의 경우 속성값의 범위를 1, 2, 3, 4로 제한하며, '학년' 속성에는 그 외의 값은 입력될 수 없다.

 

다음은 '학번', '이름', '학년', '수강과목', '점수' 속성으로 구성된 (1)(을)를 SQL문을 통해 <성적>테이블로 구현한 것이다.

 

<성적>

* 속성만으로 풀 수 있어 테이블은 생략하겠습니다.

 

위와 같이 생성된 <성적>테이블을 대상으로 <지시사항>을 실행하는 SQL문은 다음과 같다.

 

<지시사항 및 SQL문>

* <성적>테이블에서 '데이터베이스' 과목을 수강하는 학생 중 점수가 80점 이상인 학생의 이름을 출력하시오.

→ SELECT 이름 FROM 성적 WHERE 수강과목 = '데이터베이스' (3) 점수 >= 80;

 

* <성적>테이블에서 수강과목별 점수의 평균이 85점 이상인 수강과목을 출력하시오.

→ SELECT 이름 FROM 성적 GROUP BY 수강과목 = (4) AVG(점수) >= 85;

 

* <성적>테이블에서 '빅데이터개론'을 수강한 학생의 점수를 모두 0으로 바꾸시오.

→ UPDATE 성적 (5) 점수 = 0 WHERE 수강과목 = '빅데이터개론';

 

정답

 

(1) 릴레이션

(2) 도메인

(3) AND

(4) HAVING

(5) SET

 

해설

 

데이터베이스의 개념과 SQL문에 관한 문제입니다. (3)은 WHERE절의 조건을 여러 개 입력할 때 연결을 위한 AND가 들어가게 되고 (4)는 GROUP BY절에서 조건을 넣는 HAVING 키워드가 들어갑니다. (5)는 UPDATE문의 문법에 맞게 SET이 입력되어야 합니다.

알고리즘과 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