* 공단에서 실기 문제와 답은 공개하지 않습니다. 포스팅한 자료는 응시하신 분들의 기억으로 복원된 문제와 가답안이므로 실제 문제 순서나 정답과 다를 수 있습니다.
* 본 포스팅을 무단 복제하거나 배포하지 마시기 바랍니다. ( 게시글 최상단에 본 블로그 출처 밝히시면 포스팅 가능합니다. )
* 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');
'정보처리기사 > 정보처리기사 실기 대비 문제' 카테고리의 다른 글
정보처리기사 실기 목차 - 정리, 예상문제, 문제 복원 수록 (25) | 2021.09.13 |
---|---|
정보처리기사 실기) 2020-2021 프로그래밍 문제 모음 (3) | 2021.09.13 |
정보처리기사 실기) 기출변형 단답형 100제 (13) | 2020.10.16 |
정보처리기사 실기) 예상모의고사 40제 (8) | 2020.10.14 |
정보처리기사 실기) 정보처리기사 실기 예상문제 (421~440) (0) | 2020.09.21 |
댓글