정처기 실기 : 2024년 1회차 기출, 1️⃣2️⃣~1️⃣5️⃣

m_ngyeong·2024년 7월 24일
0
post-thumbnail

정보처리기사 실기


📝 2024년 1회차 기출, 1️⃣2️⃣~1️⃣5️⃣

12. Python Lang.

a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"]
str01 = "S"
for i in a:
  str01 = str01 + i[1]
print(str01)

🖍 Seynaau
최초의 대문제 S에서 뒤에 오는 것을 더해서 출력.
리스트의 각 요소들을 빼와서 1번 인텍스(2번째 문자)를 가져옴.

13. SQL

다음 SQL문을 해당하는 테이블을 작성하시오.

SELECT B
FROM R1
WHERE C IN (SELECT C FROM R2 WHERE D = 'k');

<R1>

ABC
1ax
2bx
1cw
3dw

<R2>

CDE
xk3
yk3
zs2

🖍
WHERE 조건문 : SELECT C FROM R2 WHERE D = 'k'의 결과

14. 테스트 커버리지

  • 개별 조건식이 다른 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주는 테스트케이스 도출 구조적 테스트 기법
  • 개별 조건식이 전체 조건식의 결과에 영향을 주는 조건 조합을 찾아 커버리지를 테스트하는 방법

🖍 MC/DC(Modified Condition/Decistion Coverage, 변형 조건/결정 커버리지)
MC/DC는 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지이다.

  • DC(Decision Coverage) : Branch Coverage라고도 하며, 소스 코드의 모든 조건문에 대해 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스를 설계.
  • CC(Condition Coverage) : 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계.
  • C/DC(C/D Coverage) : 전체 조건식뿐만 아니라 개별 조건식도 True 한 번, False 한 번 결과가 되도록 수행하는 테스트 커버리지.
  • SC(Statement Coverage) : 소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스를 설계
  • MCC(Mutiple Conditon Coverage) : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
  • https://velog.io/@m_ngyeong/Application-Testing

15. C Lang. - 시저 암호/카이사르 암호 알고리즘

#include <stdio.h>
#include <string.h>

void isUpper(char *str);
void isLower(char *str);
void isNum(char *str);
char str[] = "It is 8";

int main() {
    int i = 0;
    while(i<strlen(str)){
        char ch = str[i];
        if(ch >= 'A' && ch <= 'Z'){
            isUpper(&str[i]);
        }
        else if(ch >= 'a' && ch <= 'z'){
            isLower(&str[i]);
        }
        else if(ch >= '0' && ch <= '9'){
            isNum(&str[i]);
        }
        i++;
    }
    printf("%s", str);
    return 0;
}

void isUpper(char *str){
    *str = (*str - 'A' + 5) % 26 + 'A';
}
void isLower(char *str){
    *str = (*str - 'a' + 10) % 26 + 'a';
}
void isNum(char *str){
    *str = (*str - '0' + 3) % 10 + '0';
}

🖍 Nd sc 1

  • ASCII Code에 따라 문자를 계산할 수 있음. (https://www.ascii-code.com/)
    '0': 48 ~ '9': 57, 'A': 65, 'a': 97

    ('I' - 'A' + 5) % 26 + 'A';
    = (73 - 65 + 5 ) % 26 + 65
    = (8 + 5) % 26 + 65 = 13 + 65
    = 78
    ∴ N


    ('t' - 'a' + 10) % 26 + 'a';
    = (116 - 97 + 10) % 26 + 97
    = (19 + 10) % 26 + 97 = 3 + 97
    = 100
    ∴ d

    ('i' - 'a' + 10) % 26 + 'a';
    = (105 - 97 + 10) % 26 + 97
    = (8 + 10) % 26 + 97 = 18 + 97
    = 115
    ∴ s

    ('s' - 'a' + 10) % 26 + 'a';
    = (115 - 97 + 10) % 26 + 97
    = (18 + 10) % 26 + 97 = 2 + 97
    = 99
    ∴ c

    ('8' - '0' + 3) % 10 + '0';
    = (56 - 48 + 3) % 10 + 0 = 11 % 10
    = 1

시저 암호/카이사르 암호(Caesar cipher) 알고리즘

암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식의 알고리즘을 말한다.

[이미지 참고: https://ko.wikipedia.org/wiki/카이사르_암호]

  • 카이사르 암호는 각각의 알파벳을 일정한 거리만큼 밀어 글자를 치환하는 방식으로 암호화한다. 위 예제에서는 3글자씩 밀어서 암호화하기 때문에 BE로 치환됨.


참고,
기출 문제 : https://newbt.kr/시험/정보처리기사%2520실기
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
https://youtu.be/0sWcTYhi0MQ?si=8BR39eZjgtSyzg3x
https://cafe.naver.com/soojebi

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

0개의 댓글