반응형

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

 

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

 

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

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

developer-rooney.tistory.com

 

알고리즘 C언어

 

C언어로 구현된 프로그램에서 5를 입력했을 경우의 실행 결과를 쓰시오.(7점)

 

#inclue <stdio.h>

int recursive(int n) {

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

}

void main() {

    int i;
    printf("숫자를 입력하시오 : ");
    scanf("%d", &i);
    recursive(i);

}

 

실행 결과

 

5

11

23

47

95

 

해설

 

이 문제는 재귀함수에 관한 문제입니다. 하단 main 함수에서 정수 i에 5가 입력되었을 때, recursive(5)가 실행되고 recursive() 함수는 상단에 정의되어 있습니다.

 

recursive() 함수는 if, else문에 의해 들어온 숫자가 1보다 작을 경우에는 2를 반환하고 그 외의 경우에는 i에 (2 * recursive(n-1)) + 1을 넣어 초기화한 후 i를 출력한 뒤 i를 반환합니다.

 

재귀함수는 자기 자신을 반복하여 호출하는 함수입니다. 즉, 위의 경우는 입력된 값이 1보다 작아져서 2를 반환하기 전까지는 자기 자신을 반복적으로 실행하기 때문에 반대로 2를 반환하는 경우부터 순서대로 올라가며 풀이해야 합니다.

 

따라서, 2를 반환하는 경우인 recursive(0)부터 recursive(5)까지 순서대로 올라가서 풀이할 경우

 

recursive(0) : return 2

recursive(1) : return 2 * 2 + 1 -> 5 출력

recursive(2) : return 2 * 5 + 1 -> 11 출력

recursive(3) : return 2 * 11 + 1 -> 23 출력

recursive(4) : return 2 * 23 + 1 -> 47 출력

recursive(5) : return 2 * 47 + 1 -> 95 출력

 

위처럼 풀이하시면 됩니다. 또한 해당 문제는 출력 부분이 printf("&d\n", i)로 되어 있어 한 번 출력하고 줄바꿈을 해야 합니다.

 

 

알고리즘 - 자바

 

Java(Java SE 7) 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.(8점)

 

public class test{
    public static void main(String[] args) {
    
        int[] a = {2, 2, 3, 4, 6, 7, 6, 7, 5, 2};
    
        int i = a.length - 1;
    
        int cnt = 0;
    
        while(i>=0) {
    
    	    if(a[i] == 2)
                cnt++;
    	    i--;
        }
        
        System.out.print(cnt);
    
    }
}

 

실행 결과

 

3

 

해설

 

배열에 2가 몇 개 포함되었나 갯수를 세는 문제입니다. a는 정수가 저장된 배열이고 i는 배열 a의 마지막 인덱스를 저장합니다. 그리고 cnt는 0으로 초기화하고 2를 찾을 때마다 1씩 증가시켜 a 배열에 있는 2의 갯수를 확인할 때 사용하는 변수입니다.

 

while문에서 i가 0보다 크거나 같을 때까지 실행되는데 이는 배열의 최소 인덱스가 0이기 때문이고 이 문제는 제일 마지막 인덱스부터 제일 처음 인덱스까지 1씩 감소하며 정수 2를 찾습니다.

 

while 안에 있는 if문을 보면 a[i] == 2 일 때만 cnt를 1씩 증가시키고 i를 1씩 감소시킵니다.

 

즉, i는 9에서 시작하여 0이 될 때까지 줄어들며 배열 a의 값을 확인하고, 2는 총 3개이기 때문에 cnt를 출력했을 때 3이 출력됩니다.

 

 

데이터베이스

 

1. 다음 데이터베이스 시스템과 관련된 설명에 가장 부합하는 용어를 쓰시오.(5점)

 

- 데이터베이스 시스템과 관련된 모든 자원에 대해 기획, 통제를 하며, 데이터베이스 언어를 이용해 DBMS를 거쳐 데이터베이스 시스템의 전체적인 관리 운영에 책임을 지는 사람이나 집단을 말한다.

- 데이터의 저장구조와 접근 방법을 결정하는 역할을 한다.

- 시스템의 보안성과 무결성을 검사하는 기능을 결정하는 역할을 한다.

- 데이터베이스에 대한 백업과 회복을 위한 적절한 방법을 선택하는 역할을 한다.

- 확장 및 범용 데이터베이스의 성능 통제와 변경을 계획한다.

 

정답 : DBA

 

해설 : 데이터베이스 시스템을 기획, 통제하고 관리 운영에 책임을 지는 사람이나 집단을 DBA(Database Administer)라고 부릅니다.

 

 

2. 정규화와 관련된 설명이다. 빈 칸에 가장 적합한 용어를 쓰시오.

 

이상(Anomaly)과 함께 관계형 데이터베이스에서 고려해야 할 것 중에 하나가 함수종속이다.
함수종속의 종류에는 (2), (3), (4) 등이 있다.

(2)(은)는 릴레이션에서 한 속성이 (1)(이)가 아닌 다른 속성에 종속되거나 또는 (1)(이)가 2개 이상의 합성키로 구성된
경우, 이 중 일부 속성에 종속이 되는 경우를 말한다. (3)(은)는 릴레이션에서 한 속성이 오직 (1)에만 종속되는
경우를 말한다.

정규화 과정 중 1NF는 한 릴레이션을 구성하는 모든 도메인이 원자값(Atomic Value)만으로 구성되도록 하는
정규형을 말한다. 2NF는 제1정규형에서 (2)의 관계로 인한 이상 문제를 해결하기 위해 릴레이션을 분해하는
과정을 말한다. 2NF 수행 결과 속성들 간에는 (3)의 관계가 성립하게 된다.

3NF는 (4)의 관계가 성립하지 않도록 하는 것이다. (4)(이)란 간접적인 함수종속 관계를 의미한다.
즉, 예를 들어 속성A가 속성B를 결정하고, 속성B가 속성C를 결정하는 경우, "A → C"가 성립한다.

아울러 3NF에서는 결정자이면서 (5)(이)가 아닌 것이 존재함에 따라 이상 현상이 발생할 수도 있다.
결정자이면서 모두 (5)(이)면, 릴레이션R은 BCNF에 속한다.

(5)(이)란, 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 집합이다.
즉, (1)(으)로 사용할 수 있는 속성들을 의미한다. (5)(은)는 유일성과 최소성을 만족한다. 아울러 하나의
릴레이션에 존재하는 (5)들 중에서 (1)(을)를 제외한 나머지들을 대체키라고 한다.

 

정답

 

(1) : 기본키

(2) : 부분 함수 종속

(3) : 완전 함수 종속

(4) : 이행 함수 종속

(5) : 후보키

 

해설

 

이 문제는 데이터베이스의 데이터베이스의 키와 함수 종속에 대한 이해가 필요한 문제입니다. 하단 링크에 간략히 설명하였지만 암기와 이해가 필요한 문제이므로 지문의 내용을 통해 각각 키워드의 개념을 이해해야 합니다.

 

데이터베이스 키의 개념 및 종류와 함수 종속

정보처리산업기사 실기 범위에서 나오는 데이터베이스 키의 개념과 종류, 함수 종속에 대하여 알아봅시다. 구체적인 내용보다는 문제를 풀 수 있을 정도의 요약된 내용만을 정리하였습니다. 데

developer-rooney.tistory.com

 

 

2. 아래 <학생> 테이블에서 3학년 이상인 학생들의 과목을 중복되지 않게 모두 검색하는 SQL을 작성하시오.(5점)

 

<학생>

학번 성명 과목명 학년 전화번호
12345 루니 자료구조 1 010-0000-0000
12346 램파드 데이터베이스 3 010-1111-1111
12347 비야 자료구조 3 010-2222-2222

 

정답

 

select distinct 과목 from 학생 where 학년 >= 3;

 

해설

 

중복 제거는 'distinct'를 사용하고 3학년 이상인 학생들만 출력하면 되기 때문에 where절에서 '학년 >= 3'이라는 조건을 지정합니다. * SQL 명령어는 시험에서 대소문자를 가리지 않습니다.

 

중복 제거 문제는 자주 출제되므로 숙지해야 합니다.

반응형

+ Recent posts