정처기 실기 : 2024년 2회차 기출, XV ~ XV

m_ngyeong·2024년 10월 17일
0
post-thumbnail

정보처리기사 실기


📝 2024년 2회차 기출, XV ~ XV

11. C Lang.

#include <stdio.h>

void func(char *d, char *s) {
	int sum = 0;
	while (*s) {
		*d = *s;
		d++;
		s++;
	}
	*d = '\0';
}

int main() {
    char *str1 = "first"; 
	char str2[50] = "teststring"; 
	int result = 0;
	func(str2, str1); // 문자열 복사 함수

	for (int i = 0; str2[i] != '\0'; i++) {
		result += i;
	}
	printf("%d", result);
	return 0;
}

🖍 10

문자열 복사와 배열을 순회하면서 인덱스를 더하는 프로그램.

  1. main함수에서 str1은 문자열 리터럴 "first"를 가리키고 있고, str2은 문자열 "teststring"로 초기화 됨.
    ▪️ str1 = "first"
    ▪️ str2 = "teststring"
  2. func(str2, str1);를 호출하면, dstr2 배열을, sstr1을 가리킴.
  3. func(char *d, char *s) 함수의 while (*s) 루프는 s가 가리키는 문자가 널(\0) 문자가 아닐 동안 반복.
    ▪️ *d = *s;에 의해 s가 가리키는 문자인 "first"의 문자가 d가 가르키는 str2 배열의 각 위치에 복사됨.
    ▪️ 루프 실행 과정:
    - 첫 번째 반복: *d = *s는 'f'를 str2[0]에 복사 → str2는 "feststring"
    - 두 번째 반복: 'i'를 str2[1]에 복사 → str2는 "fiststring"
    - 세 번째 반복: 'r'를 str2[2]에 복사 → str2는 "firtstring"
    - 네 번째 반복: 's'를 str2[3]에 복사 → str2는 "firsstring"
    - 다섯 번째 반복: 't'를 str2[4]에 복사 → str2는 "firsttring"
  4. 다섯 글자의 복사가 끝난 후, *s가 널(\0) 문자가 되면서 루프가 종료됨. 마지막으로 *d = '\0';에 의해 str2 배열의 다음 위치에 널 문자가 들어가서 문자열이 정상적으로 끝남.
    ▪️ str[5] = 널(\0) 문자가 되면서 문자열 종료.
  5. 최종적으로, str2는 "first"가 됨.
  6. for 문에서 str2 문자열의 각 문자를 순차적으로 순회하면서, 인덱스 i의 값을 result에 더함.
    ▪️ str2가 "first"로 변경되었으므로, 이 루프는 i = 0부터 i = 4까지 실행됨.
    ▪️ result = 0 + 1 + 2 + 3 + 4 = 10

12. Java Lang. - 홀짝 각각의 합

interface Number {
	int sum(int[] a, boolean odd);
}


public class Main {
    public static void main(String[] args) {
        int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
		OENumber OE = new OENumber();
		System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
    }
}
class OENumber implements Number {
	public int sum(int[] a, boolean odd) {
		int result = 0;
		for(int i=0; i < a.length; i++) {
			if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
				result += a[i];
		}		
		return result;
	}	
}

🖍 25, 20

홀수, 짝수 각각의 합 구하는 프로그램

Number라는 인터페이스와 OENumber라는 클래스를 정의하여, 특정 조건에 따라 배열에서 홀수 또는 짝수만을 골라 그 합을 구하는 구조로 되어 있다.
1. Number 인터페이스:
sum이라는 메서드를 정의. 이 메서드는 배열 aboolean odd를 매개변수로 받아 int 값을 반환하는데, 배열에서 홀수나 짝수만 골라 그 합을 반환하는 기능을 구현하도록 설계되었음.
2.OENumber 클래스: Number 인터페이스 구현.
▪️ oddtrue일 때는 홀수인 경우 a[i] % 2 != 0만 더함. (a[0]=1일 때, 1 % 2 !=0true)
result = 1 + 3 + 5 + 7 + 9 = 25
▪️ oddfalse일 때는 홀수인 경우 a[i] % 2 != 0만 더함.
result = 2 + 4 + 6 + 8 = 20

13. RIP 경로

다음 라우터 A에서 라우터 F까지 경로를 설정하기 위해 RIP 방식을 사용한다고 할 때, 라우터가 지나가는 경로를 순서대로 쓰시오.(단, 간선 위의 숫자는 라우터 간의 거리를 의미한다.)

🖍 A → D → C → F

RIP 최단 경로

  • 홉 수(hop count)가 가장적은 경로
    *홉 수는 라우터가 목적지까지 가는 데 거쳐야 하는 라우터의 수를 의미
  • (홉 수 동일하다면)비용이 적은 경로
  • 홉 수가 15를 넘기면 불가능한 경로로 판단

14. 알고리즘

  • 대칭키 알고리즘으로 1997년 NIST(미국 국립기술표준원)에서 DES를 대체하기 위해 생성되었다.
  • 128비트, 192비트 또는 256비트의 가변 키 크기와 128비트의 고정 블록 크기를 사용한다.
  • 높은 안전성과 효율성, 속도 등으로 인해 DES 대신 전 세계적으로 많이 사용되고 있다.

    🖍 AES

15. C Lang. - 2차원 배열

#include <stdio.h>

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);
	
	return 0;
}

🖍 21

2차원 배열

  1. arr[3][3]은 3x3 배열 :
arr[0]: 1 2 3
arr[1]: 4 5 6
arr[2]: 7 8 9
  1. parr는 포인터 배열
parr[0]: arr[1] -> {4, 5, 6}
parr[1]: arr[2] -> {7, 8, 9}
  • parr[1][1] == arr[2][1] : 8
  • *(parr[1]+2) == arr[2][2] : 9
  • **parr == arr[1][0] : 4
    *parrparr[0]을 가리키고, parr[0]arr[1]을 가리킴.
  1. ∴ 8 + 9 + 4 = 21


참고,
https://www.gisafirst.com/,
https://newbt.kr/

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글