정보처리기사 실기) 2017-2019 프로그래밍 문제 모음
본문 바로가기
정보처리기사/정보처리기사 실기 대비 문제

정보처리기사 실기) 2017-2019 프로그래밍 문제 모음

by 코딩하는 핑가 2021. 9. 3.
반응형

* 공단에서 실기 문제와 답은 공개하지 않습니다. 포스팅한 자료는 응시하신 분들의 기억으로 복원된 문제와 가답안이므로 실제 문제 순서나 정답과 다를 수 있습니다.

* 본 포스팅을 무단 복제하거나 배포하지 마시기 바랍니다. ( 게시글 최상단에 본 블로그 출처 밝히시면 포스팅 가능합니다. )

* 2017년부터 2019년까지 프로그래밍 문제만 모았습니다.

* JAVA (10문제) - C (11문제) - SQL (8문제) 순서로 모았습니다.

 

1탄 - 정보처리기사 실기) 2017-2019 프로그래밍 문제 모음

2탄 - 정보처리기사 실기) 2020-2021 프로그래밍 문제 모음


[JAVA]

1. 다음 Java 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2017년 1회 )

public class Test001{
	public static void main(String[] args) {
    	int[] a = {3, 4, 10, 2, 5};
        int temp;
        for(int i = 0; i <= 3; i++){
        	for(int j = i + 1; j <= 4; j++){
            	if(a[i] < a[j])
                {
                	temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        for(int i = 0; i < 5; i++)
        	System.out.println(a[i]);
    }
}
더보기

답안

10

5

4

3

2

 

해설

 

2. 다음 Java 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2017년 2회 )

public class Tes001{
	public static void main(String[] args) {
    	INT A = 0, SUM = 0;
        While (a < 10)
        {
        	a++;
            if(a % 2 == 1)
            	continue;
            sum += a;
        }
        system.out.println(sum);
    }
}
더보기

답안 : 30

해설

 

3. 다음은 배열에 저장된 5개의 자료 중 가장 큰 값과 가장 작은 값을 찾아 출력하는 프로그램을 Java언어로 구현한 것이다. 프로그램을 분석하여 괄호에 해당하는 답안을 <답란>에 쓰시오. ( 2017년 3회 )

 

<알고리즘의 이해>

최대값은 자료 중에서 가장 큰 값을 찾는 것이고 최소값은 자료 중에서 가장 작은 값을 찾는 것이다. 최대값을 찾는 방법 중 한 가지는 첫 번째 자료를 가장 작은 값으로 정하고 두 번째 자료부터 차례대로 비교하여 더 큰 값이 나오면 그 값을 최대값으로 하고 다음 자료와 비교하는 과정을 모든 자료에 대해 반복하는 것이다. 최소값을 찾는 방법 중 한 가지는 첫 번째 자료를 가장 큰 값으로 정하고 두 번쨰 자료부터 차례대로 비교하여 더 작은 값이 나오면 그 값을 최소값으로 하고 다음 자료와 비교하는 과정을 모든 자료에 대해 반복하는 것이다.

 

<코드>

public class Tes02{
	public static void main(String[] args) {
    	int a[] = {10, 30, 50, 70, 90};
        int i, max, min;
        max = a[0];
        min = a[0];
        for(i = 0; i <5; i++) {
        	if((   ) > max)
            	max = a[i];
            if((   ) < min)
            	min = a[i]
        }
        System.out.printf("%d\n", max);
        System.out.printf("%d\n", min);
    }
}

 

더보기

답안 a[i]

해설

 

4. 다음 Java 언어의 <처리조건>과 <코드>를 보고 괄호 (①) ~ (②)에 적용될 수 있는 가장 적합한 답을 쓰시오. ( 2018년 1회 )

<처리 조건>
배열에는 95, 75, 85, 100, 50 이 차례대로 저장된다.
배열에 저장된 값을 오름차순으로 정렬하여 출력한다.

<코드>

public class Test1 {
	public satic void main(String[] args) {
    	int E[] = {  (    ①   )  };
        int i = 0;
        int Temp = 0;
        
        do
        {
        	int j = i;
            do
            {
            	if( E[i] > (   ②   ) )
                {
                	Temp = E[i];
                    E[i] = E[j];
                    E[j] = Temp;
                }
                j++;
            }	while (j < 5);
            i++;
        }	while (j < 4);
    	
        for (int a = 0; a < 5; a++ )
        {
        	System.out.printf(E[a]+"\t");
        }
        System.out.println();
    }
}
더보기

답안

① 95, 75, 85, 100, 50

② E[j]

 

해설

 

5. 다음 Java 언어의 <출력>과 <코드>를 보고 괄호 (①), (②)에 가장 적합한 답을 쓰시오. ( 2018년 2회 )

<출력>

0 1 2 3 4
1 2 3 4 5
2 3 4 5 6

<코드>

public class Problem {
	public static void main(String[] args) {
    	int[][] a = new int[( ① )][( ② )];
        for(int i = 0; i < 3; i++) {
        	for(int j = 0; j < 5; j++) {
            	a[i][j] = i + j;
                System.out.printf("%d", a[i][j]);
            }
            System.out.println();
        }
    }
}
더보기

답안 : ① 3 ② 5

해설

 

6. 다음은 피보나치 수열의 합계를 구하는 프로그램을 Java 언어로 구현한 것이다. 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2018년 3회 )

public class Problem {
	public static void main(String[] args) {
    	int a, b, c, sum;
        a = b = 1;
        sum = a + b;
        
        for(int i = 3; i <=5; i++)
        {
        	c = a + b;
            sum += c;
            a = b;
            b = c;
        }
        System.out.println(sum);
    }
}
더보기

답안 : 12

해설

 

7. 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2019년 1회 )

class SuperObject {
	public void print() {
    	draw();
    }
    
    public void draw() {
    	draw();
        System.out.println("Super Object");
    ]
}

class SubObject extends SuperObject {
	public void paint() {
    	super.draw();
    }
    
    public void draw() {
    	System.out.println("Sub Object");
    }
}

public class Test {
	public static void main(String[] args) {
    	SuperObject a = new SubObject();
        a.paint();
    }
}
더보기

<2020년 3회 유사문제 출제됨>

답안

Sub Object

Super Object

 

* 답안 작성 시 주의 사항

- 최근 출제되고 있는 프로그램 코드 문제는 이 문제처럼 코드에 대한 설명이 전혀 없습니다.

- 그러므로 C나 JAVA 코드 문제를 풀 때는 실행 순서대로 디버깅을 수행하면서 문제 해결의 실마리를 찾는 습관을 들여야 합니다.

 

해설

 

8. 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2019년 1회 )

public class Test {    
    public static void main(String[] args) {
    	int i, sum = 0;
        for (i = 1; i <= 110; i++) {
        	if(i%4 == 0)
            	sum = sum + 1;
        }
        System.out.printf("%d", sum);
    }
}
더보기

답안 : 27

해설

 

9. 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2019년 2회 )

public class Test {
	public static void main(String[] args) {
    	int numAry[] = new int[5];
        int result = 0;
        
        for(int i = 0; i < 5; i++)
        	numAry[i] = i+1;
            
        for(int i:numAry)
        	result += i;
        
       	System.out.printf("%d", result);
    }
}
더보기

답안 : 15

해설

 

10. 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2019년 2회 )

public class Test {
	public static int[] arr(int[] a) {
    	int i, j, sw, temp, n = 5;
        if(a[0] == 0 || a[0] < 1)
        	return a;
        
        for(i = 0; i < n-1; i++) {
        	sw = i;
            for(j = i + 1; j < n; j++) {
            	if(a[j] > a[sw])
                	sw = j;
            }
            temp = a[i];
            a[i] = a[sw];
            a[sw] = temp;
        }
        return a;
    }
    
    public static void main(String[] args) {
    	int i;
        int n[] = {4,3,5,2,10};
        arr(n);
        for(i = 0; i < 5; i++)
        	System.out.println(n[i]);
    }
}
더보기

답안

10

5

4

3

2

* 답안 작성 시 주의 사항

- 프로그램의 실행 결과는 출력 양식을 정확히 지켜야 합니다.

- println을 통해 출력하였으므로 배열 n의 요소들을 출력할 때 마다 줄 나눔이 적용되어야 합니다.

 

해설

 

[C언어]

1. 다음 c언어로 구현된 프로그램에서 괄호 (1)에 해당하는 가장 적합한 변수(Variable)나 조건식을 C언어 코드 형식으로 쓰시오.  ( 2017년 1회 )

#include <stdio.h>
main()
{
	int num[10];
    int min = 9999;
    int i;
    for (i = 0; i < 10; i++) {
    	scanf("%d", &num[i]);
    }
    for (i = 0; i < 10; i++) {
    	if (min > (   1   )) {
        	min = num[i];
        }
    }
    printf("가장 작은 값은 %d이다.", min);
}
더보기

답안 : num[i]

 

해설

 

2. 다음 C언어로 구현된 100을 넘지 않는 소수의 개수를 구하는 프로그램에서 괄호 (1)에 해당하는 가장 적합한 변수(Variable)나 조건식을 C언어 코드 형식으로 쓰시오. ( 2017년 2회 )

#include <stdio.h>
int isprime(int number)
{
	int i;
    for(i = 2; i < number; i++)
    	if (  (   1   )  )
        	return 0;
        return 1;
}

int main()
{
	int number = 100, cnt - 0, i;
    for(i = 2; i < number; i++)
    	cnt = cnt + isprime(i);
    printf("%d를 넘지 않는 소수는 %d개입니다.\n", number, cnt);
    return 0;
}
더보기

답안 : number % i == 0

해설

 

3. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2017년 3회 )

#include <stdio.h>
int res10() {
	return 4;
}
int res30() {
	return 30 + res10();
}
int res200() {
	return 200 + res30();
}
int main() {
	int result;
    result = res200();
    printf("%d\n", result);
}
더보기

답안 : 234

해설

 

4. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. ( 2017년 3회 )

#include <stdio.h>
int power(int data, int exp) {
	int i, result = 1;
    for(i = 0; i < exp; i++)
    	result = result * data;
    return result;
}
int main() {
	printf("%d\n", power(2, 10));
    return 0;
}
더보기

답안 : 1024

해설

 

5. 다음 C 언어의 <출력>과 <코드>를 보고 괄호 (①), (②), (③), (④)에 적용될 수 있는 가장 적합한 답을 쓰시오. ( 2018년 1회 )

<출력>

statck's status
value = 40
value = 30

value = 20

<코드>

#include <stdio.h>
#define MAX_STACK_SIZE 10

int stack[MAX_STACK_SIZE];
int top = -1;

void push(int item)
{
	if (top >= (   ①   ))
    {
    	printf("stack is full\n");
    }
    stack[++top] = (  ②  );
}

int pop()
{
	if (top == (  ③  ))
    {
    	printf("stack is empty\n");
    }
    return stack[(  ④  )];
}

int isempty()
{
	if (top == (  ③  ))
    	return 1; else return 0;
}

int isfull()
{
	if (top >= (  ①  ))
    	return 1; else return 0;
}

int main()
{
	int e;
    push(20); push(30); push(40);
    printf("stack's status\n");
    while (!isempty())
    {
    	e = pop();
        printf("value = %d\n", e);
    }
}
더보기

답안

① MAX_STACK_SIZE-1 또는 9

② item

③ -1

④ top--

 

해설

[디버깅]

 

6. 다음은 5개의 정수를 입력받아 그 중 홀수의 개수를 구하여 출력하는 알고리즘을 C언어로 구현한 <코드>이다. 프로그램을 분석하여 괄호 ( ① )에 가장 적합한 답을 쓰시오. ( 2018년 2회 )

<코드>

#include <stdio.h>

main() {
	int i, a[5], cnt = 0;
    
    for (i = 0; i < 5; i++)
    	scanf("%d", &a[i]);
        
    for (i = 0; i < 5; i++) {
    	if (a[i] % 2 ( ① ) 0)
        	cnt = cnt + 1;
    }
    
    printf("홀수의 개수 : %d개", cnt);
}
더보기

답안 : != 또는 >

해설

 

7. 다음 C 언어의 <출력>과 <코드>를 보고 괄호 (①)에 가장 적합한 답을 쓰시오. (2018년 2회 )

<출력>

1의 약수 : 1
2의 약수 : 1 2
3의 약수 : 1 3
4의 약수 : 1 2 4
5의 약수 : 1 5

<코드>

#include <stdio.h>

main() {
	int i, j;
    for (i = 1; i <= 5; i++) {
    	printf("%d의 약수 : ", i);
        for (j = 1; j <= 5; j++) {
        	if ( (  ①  ) )
            	printf("%d", j);
        }
        printf("\n");
    }
    return 0;
}
더보기

답안 : i % j == 0

해설

* 답안 작성 시 주의 사항

- C언어에서 사용하는 형식에 맞게 정확히 작성해야 합니다.

- 조건에서 '같다'는 표현을 'i % j = 0'으로 하지 않도록 주의하세요.

 

8. 다음은 6면 주사위를 100번 굴려서 나온 각 면의 수를 배열에 저장하여 출력하는 알고리즘을 C언어로 구현한 <코드>이다. 프로그램을 분석하여 괄호 ( ① ), ( ② )에 가장 적합한 답을 쓰시오.  ( 2018년 3회 )

<코드>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main(){
	int hist[6] = { 0, };
    int n, i = 0;
    srand(time(NULL));
    
    do {
    		i++;
            n = rand() % 6 + 1;
            hist[ (  ①  ) ] += 1;
    	} while (i < 100);
        
   	for (i = 0; i < 6; i++)
    	printf("[%d] = %d\n", i+1, (   ②  ));
}
더보기

답안 : ① n - 1 ② hist[i]

해설

 

9. 다음은 연결 리스트를 활용하여 스택 구조를 C언어로 구현한 것이다. <출력>과 <코드>를 보고 괄호 ( ① ), ( ② )에 가장 적합한 답을 쓰시오. ( 2018년 3회 )

<출력>

30
20
10

<코드>

#include <stdio.h>
#include <stdlib.h>

struct NODE {
	int data;
    struct NODE *Next;
};

struct NODE *head;

void Push(int data){
	struct NODE *end = malloc(sizeof(struct NODE));
    end->(  ①  ) = head->(  ①  );
    end->data = data;
    head->(  ①  ) = end;
}

int Pop() {
	int a;
    
    sruct NODE *del = head->(  ①  );
    head->(  ①  ) = del->(  ①  );
    a = del->data;
    free(del);
    return a;
}

main() {
	int r;
    
    head = malloc(sizeof(struct NODE));
    head->(  ①  ) = NULL;
    
    Push(10);
    Push(20);
    Push(30);
    
    r = (  ②  );
    printf("%d\n", r);
    r = (  ②  );
    printf("%d\n", r);
    r = (  ②  );
    printf("%d\n", r);
}
더보기

답안 : ① Next ② Pop()

해설

 

10. 다음 C 언어로 구현한 프로그램을 분석하여 괄호 ( ① ) ~ ( ② )에 가장 적합한 답을 쓰시오. ( 2019년 1회 )

예) 1234567을 입력받으면 결과는 1+2+3+4+5+6+7 = 28 출력

[ 코드 ]

#include <stdio.h>

main()
{
	int input, sum = 0;
    scanf("%d", &input);
    while (1) {
    	if (( ① ) == 0) // 답안 1
        	break;
        sum = sum + input % 10;
        input = input / ( ② ); // 답안 2
    }
    printf("%d\n", sum);
}

 

더보기

답안

① input

② 10

 

해설

 

11. 다음 C 언어로 구현한 프로그램을 분석하여 괄호 (   )에 가장 적합한 답을 쓰시오. ( 2019년 2회 )

[ 코드 ]

#include <stdio.h>

main()
{
	char ch, str[] = "12345000";
    int i, j;
    
    for (i = 0; i < 8; i++) {
    	ch = str[i];
        if ( (  답작성란  ) )
        	break;
    }
    
    i--;
    for (j = 0; j < i; j++) {
    	ch = str[j];
        str[j] = str[i];
        str[i] = ch;
        i--;
    }
    
    printf("%s", str);
}

[ 실행 결과 ]

54321000
더보기

답안 : ch == '0'

* 답안 작성 시 주의 사항

- 프로그램의 실행 결과는 출력 양식을 정확히 지켜야 합니다.

- println을 통해 출력하였으므로 배열 n의 요소들을 출력할 때 마다 줄 나눔이 적용되어야 합니다.

 

해설

[디버깅]

 

[SQL]

1. 데이터베이스와 관련한 다음 <처리 조건>에 부합하는 SQL문을 작성하시오.  ( 2017년 1회 )

더보기

답안 : INSERT INTO 학생 VALUES(98170723, '한국산', 3, '경영학개론', '?-1234-1234');

 

2. 데이터베이스와 관련한 다음 <처리 조건>에 부합하는 SQL문을 작성하시오. ( 2017년 2회 )

<처리 조건>

1. 학생 테이블에서 이름이 Scott인 튜플을 삭제하시오.

2. 문자형은 싱글(작은)따옴표로 입력하고 문장의 끝에는 세미콜론(;)을 반드시 표기하시오.

더보기

답안

DELETE FROM 학생 WHERE 이름 = 'Scott';

 

3. 데이터베이스와 관련한 다음 <처리 조건>에 부합하도록 괄호 (①)~(④)를 채워 SQL문을 완성하시오. ( 2017년 3회 )

더보기

답안

① Not Null

② Primary

③ Foreign

④ References

 

해설

 

4. 다음 <처리 조건>에 유의하여 <학생> 테이블에 대한 알맞은 SQL문을 작성하시오. ( 2018년 1회 )

<학생>

<처리 조건>

1. 학생 테이블에서 3학년과 4학년 학생의 학번과 이름을 검색하는 SQL문을 작성하시오.

2. 원소 함수 In을 사용하시오. ( 원소 함수 In(value1, value2, ···)

3. SQL문의 끝에는 세미콜론(;)으로 표시하시오.

더보기

답안 : Select 학번, 이름 From 학생 Where 학년 in (3, 4);

답안 : Select 학번, 이름 From 학생 Where 학년 in (3, 4);

 

5. <학생> 테이블에 최대 3문자로 구성되는 학년 속성을 추가하는 SQL문의 괄호 (①), (②)를 채워 SQL문을 완성하시오. (2018년 2회 )

<SQL문>

(   ①   ) TABLE 학생 (   ②   ) 학년 VARCHAR(3);
더보기

답안 : ① ALTER ② ADD

 

6. <학생> 테이블을 참고하여 다음의 각 질문에서 요구하는 답을 쓰시오. ( 2018년 3회 )

(1) 다음 SQL문의 실행 결과로 표시되는 레코드의 개수를 쓰시오.

SELECT COUNT(*) FROM 학생 WHERE 학년=4;

(2) <학생> 테이블에서 이름이 '이'로 시작하는 학생들의 학번을 검색하되, 학년을 기준으로 내림차순으로 출력하는 SQL문을 쓰시오.

더보기

답안

(1) 1

(2) SELECT 학번 FROM 학생 WHERE 이름 LIKE '이%' ORDER BY 학년 DESC;

* 답안 작성 시 주의 사항

대, 소문자를 구분하지 않습니다. 단 스펠링이 하나라도 틀렸을 경우 부분 점수 1도 없는 오답으로 처리된다는 것을 잊지마세요.

 

해설

 

7. 다음 <SCORE> 테이블에 대해 <SQL>을 수행한 결과를 적으시오. ( 2019년 2회 )

<SCORE>

DEPT DB TERM ALGO
001 100 NULL 100
002 NULL NULL 0
003 100 100 200

<SQL>

SELECT SUM(DB) FROM SCORE;
SELECT SUM(TERM) FROM SCORE;
SELECT SUM(ALGO) FROM SCORE;
더보기

답안 : 200, 100, 300

SQL문은 3개인데, 답란은 1개입니다. 답안 작성에 대한 별도의 조건이 제시되지 않았으므로 각 SQL문의 결과를 구분할 수 있도록 작성하면 됩니다.

 

8. 데이터베이스와 관련한 다음 <처리 조건>에 부합하는 SQL문을 작성하시오. ( 2019년 2회 )

<처리 조건>

1. 테이블명은 학생으로 정의한다.

2. 학생 테이블의 구조는 다음과 같다.

3. 학생 테이블에 학번이 193739, 성명이 '홍길동', 학년이 3, 과목이 '경영학개론', 연락처가 '010-1234-1234'인 학생의 정보를 입력하시오.

4. 문자형은 싱글(작은)따옴표로 입력하고 문장의 끝에는 세미콜론(;)을 반드시 표기하시오.

더보기

답안

INSERT INTO 학생 VALUES(193739, '홍길동', 3, '경영학개론', '010-1234-1234');

 

반응형

댓글