📜 정보처리기사 실기 합격 후기 (링크)
1번 - 프로그래밍 (Java)
주소, 값 비교
public class Main {
public static void check(int[] x, int[] y) {
if(x==y) System.out.print("O");
else System.out.print("N");
}
public static void main(String[] args) {
int a[] = new int[] {1, 2, 3, 4};
int b[] = new int[] {1, 2, 3, 4};
int c[] = new int[] {1, 2, 3};
check(a, b);
check(b, c);
check(a, c);
}
}
답 : NNN
2번 - 데이터베이스 이론
문제
- 정규화를 위반하면서 테이블을 분할, 중복 통합하는 기법
답 : 반정규화
3번 - SQL 문법 빈칸 채우기
문제
1) INSERT INTO 사원 (사원번호, 이름, 연령, 급여, 부서번호) (1) (10, 'JAIN', 20, 1000, 1);
2) INSERT INTO 사원 (2) 사원번호, 이름, 연령, 급여, 부서번호 FROM 신입사원 WHERE 부서번호 = 1;
3) DELETE (3) 사원 WHERE 사원번호 = 10;
4) UPDATE 사원 (4) 급여 = 2000 WHERE 이름 = 'TOM';
답 : VALUES , SELECT , FROM , SET
4번 - 데이터베이스 이론
문제
카디널리티와 디그리의 수를 적어라
학번 | 이름 | 성적 | 지도교수 |
100 | KIM | 92 | P1 |
200 | PARK | 88 | P2 |
300 | LEE | 95 | P3 |
400 | CHOI | 73 | P1 |
500 | KANG | 82 | P1 |
답 : 5 , 4
카디널리티는 튜플의 수로 행의 수 라고 생각하면 되고, 디그리의 수는 속성의 수로 열의 수라고 생각하면 된다.
5번 - 네트워크 이론
문제
기업에서 주로 사용하는 VPN 프로토콜로 종류에는 AH 프로토콜, ESP 프로토콜이 있다.
답 : IPsec
6번 - 응집도
문제
모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도를 고르시오
답 : 순차적 응집도 (응집도 선택지가 주어짐)
7번 - 디자인 패턴
문제
컬렉션 요소를 순차적으로 접근하고 순회하는 디자인 패턴으로 Cursor 가 존재함
답 : Iterator (영어 단어로 된 선택지가 주어짐)
8번 - 프로그래밍 (Python)
문제 (결과값 적기)
문자열 파싱, f string 출력
def cnt(str, p):
result = 0;
for i in range(len(str)):
sub = str[i:i+len(p)]
if sub == p:
result += 1;
return result
str = "abdcabcabca"
p1 = "ca"
p2 = "ab"
print(f'ab{cnt(str, p1)}' f'ca{cnt(str, p2)}');
답 : ab3 ca3
p1은 ca인데 출력 앞엔 ab가 있고, p2는 ab 인데 출력 앞엔 ca가 있어서 페이크가 있는 줄 알았다. 하지만 ab와 ca의 갯수를 세는 문제로, 문자열에 각각 3번씩 존재해서 답은 ab3 ca3 이다.
9번 - 네트워크
문제
1) 연결형 패킷 교환 방식을 적어라.
2) 비연결형 패킷 교환 방식을 적어라.
답 : 가상회선, 데이터그램
10번 - 프로그래밍 (C 언어)
문제 (결과값 적기)
로컬 변수 & switch - case 문
void swap() {
int a = 11;
int b = 19;
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap();
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
deafult:
b += 3;
break;
}
printf("%d", a-b);
}
답 : -13
main 함수 속 a, b 변수와 swap 함수 속 a, b 변수는 서로 다른 변수이다. 각각 다른 로컬 변수이기 때문에 main 함수 속에서 swap(); 이 진행되어도 main의 a, b 의 값은 변하지 않는다. 그래서 a = 11 , b = 19 + 2 + 3 = 24 이므로 a - b = -13 이다.
11번 - 프로그래밍 (C 언어)
문제 (결과값 적기)
문자열 복사 , 배열
void strcpy(char *d, char *s) {
while(*s) {
*d = *s;
d++;
s++;
}
*d = '\0'
}
int main() {
char* str1 = "first";
char str2[50] = "teststring";
int result = 0;
strcpy(str2, str1);
for(int i=0; str2[i] != '\0'; i++) {
result += i;
}
printf("%d", result);
}
답 : 10
strcpy 라는 함수명을 보자마자 문자열 복사임을 짐작했다. "teststring"에 "first"와 \0 을 덮어씌우면 "first\0ring "이 되므로 \0 을 만나기 전까지의 인덱스를 더한다. result = 0 + 1 + 2 + 3 + 4 = 10 이다.
12번 - 프로그래밍 (Java)
문제 (결과값 적기)
interface & 조건문 & 반복문
interface Number {
int sum(int[] a, boolean odd);
}
class SumNumber implements Number {
public int sum(int[] a, boolean odd) {
int result = 0;
for(int i=0; i
if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
result += a[i];
}
return result;
}
}
public class Main {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
SumNumber sn = new SumNumber();
System.out.print(sn.sum(a, true) + ", " + sn.sum(a, false));
}
}
답 : 25, 20
sum 함수 안에 odd가 true 이면 배열 속 홀수의 합을 return 하고, false 이면 배열 속 짝수의 합을 return 하게 된다. 그래서 1 + 3 + 5 + 7 + 9 = 25 , 2 + 4 + 6 + 8 = 20 이므로 25, 20 이라고 쉼표와 띄어쓰기도 잊지 않고 작성해야한다.
13번 - 네트워크
문제 (화살표와 함께 결과값 적기)
RIP 경로에 따라 순서를 적어라.
답 : A -> D -> C -> F
가중치와 관계 없이 최단 거리
14번 - 보안
문제
DES 가 개선된 암호화 방법을 적어라.
답 : AES
15번 - 프로그래밍 (C 언어)
문제 (결과값 적기)
포인터 배열
int main() {
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int* parr[2] = {arr[1], arr[2]};
printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
}
답 : 21
8 + 9 + 4
16번 - 운영체제
문제 (결과값 적기)
다음 표를 보고 SRT 스케쥴링에 따른 대기시간의 평균을 적으시오. 단, 소수 첫째자리까지 기재
프로세스 | 도착 시간 | 버스트(burst) 시간 |
a | 0 | 8 |
b | 1 | 4 |
c | 2 | 9 |
d | 3 | 5 |
답 : 6.5
17번 - 프로그래밍 (Java)
문제 (결과값 적기)
재귀 함수
public class Main {
public static String func(String str, int index, boolean[] seen) {
if(index < 0) return "";
char c = str.charAt(index);
String result = rf(str, index-1, seen);
if(!seen[c]) {
seen[c] = true;
return c + result;
}
return result;
}
public static void main(String[] args) {
String str = "abacabcd";
int length = str.length();
boolean[] seen = new boolean[256];
System.out.print(func(str, length-1, seen));
}
}
답 : dcba
천천히 따라가다 보면 str 문자열을 역순으로 순회하면서 중복값을 제외하고 거꾸로 붙여 출력하는 모습이 된다.
18번 - 결합도
문제 (빈칸에 들어갈 단어 적기)
(빈칸) Coupling은 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통하는 경우나 처리 기능이 두 모듈에 분리 되어 설계된 경우에 발생한다.
답 : Control (제어)
19번 - 프로그래밍 (C 언어)
문제 (결과값 적기)
구조체
struct node {
int n1;
struct node *n2;
};
int main() {
struct node *head = NULL;
struct node a = {10, 0};
struct node b = {20, 0};
struct node c = {30, 0};
struct node *head = &a;
a.n2 = &b;
b.n2 = &c;
printf("%d", head -> n2 -> n1);
}
답 : 20
20번 - 프로그래밍 (Java)
문제 (결과값 적기)
문자열 자르기 split
public class Main {
public static void main(String[] args) {
String str = "ITISTESTSTRING";
String[] result = str.split("T");
System.out.print(result[3]);
}
}
답 : S
split("T") 를 하면 result = {"I", "IS", "ES", "S", "RING"} 배열이 되어, result[3] = "S"이다.
문제 시 수정 및 삭제될 수 있습니다.