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

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

정보처리기사 실기


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

2. C Lang. - Bit

#include <stdio.h>
int main() {
    int v1 = 0 , v2 = 35, v3=29;
    if ( v1 > v2 ? v2 : v1) {
        v2 = v2 << 2;
    }
    else {
        v3 = v3 << 2;
    }
    printf("%d", v2+v3)
}

🖍 151
condition ? IfTrue : IfFalse
v1 > v2 = 0 > 35 는 거짓이므로 else 구문으로 이동.
v3 << 2에서 v3 = 29이므로 29를 2진수로 바꾸면 11101.
∴ 2만큼 비트를 왼쪽으로 이동시키면 1110100.
③ 1110100를 다시 10진수로 변환하면 116, ∴ v3 = 116.
v2+v3 = 35 + 116, ∴ 151

Shift operator

  • shift-expression << additive-expression : shift-expression에 비트가 additive-expression에 의해 지정된 위치 수만큼 왼쪽으로 이동하는 연산자. 시프트 연산으로 비워진 비트 위치는 0으로 채워짐.
    예) int x=11; printf("%d", x<<3);
    ① 11을 2진수로 바꾸면 1011,
    ② 왼쪽으로 3비트 이용하면 1011000,
    ③ 1011000를 10진수로 바꾸면 88.
  • shift-expression >> additive-expression : shift-expression에 비트 패턴이 additive-expression에 의해 지정된 수만큼 오른쪽으로 이동하는 연산자.
    부호가 없는 숫자는 시프트 연산으로 비워진 비트 위치는 0으로 채워지고, 부호가 있는 숫자의 경우 부호 비트는 비워진 비트 위치를 채우는 데 사용됨. 즉, 숫자가 양수이면 0이 사용되고 숫자가 음수이면 1 사용.
    예) int x=11; printf("%d", x>>1);
    ① 11을 2진수로 바꾸면 1011
    ② 오른쪽으로 1비트 이용하면 101,
    ③ 101를 10진수로 바꾸면 5.

Bit operator

  • & : AND 연산자,
  • | : OR 연산자, 비트 값이 하나라도 1이면 해당 비트 값은 1
  • ^ : XOR 연산자, 비트 값이 서로 다르면 해당 비트 값은 1
  • ~ : NOT 연산자, 비트의 값을 반대로 바꾸는 연산자

3. 응집도가 높은 순서대로 나열하시오.

㉠ 기능 응집도, ㉡ 교환 응집도, ㉢ 우연 응집도, ㉣ 시간 응집도

🖍 ㉠ → ㉡ → ㉣ → ㉢

Cohesion(응집도)

응집도는 모듈의 내부 요소들이 서로 관련되어 있는 정도이다.

  • 응집도도가 강할수록 품질이 높고, 약할수록 품질이 낮음
  • 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도
    📌 (우)리 (논)산 (시)(절) 기억나? (교)자, (순)대 (기)대 했었는데
  • Tpyes of Cohesion
    • Functional Cohesion(기능적 응집도) : 하나의 기능에 밀접하게 관련되어 있거나 연관되어 있을 때의 응집도
    • Sequential Cohesion(순차적 응집도) : 모듈 내 하나의 할동으로부터 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용할 경우의 응집도
    • Communication Cohesion(교환[통신]적 응집도) : 서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용할 때의 응집도
    • Procedural Cohesion(절차적 응집도) : 내부의 요소들이 기능적으로 연관성은 없으나, 순차적으로 실행될 때의 응집도
    • Temporal Cohesion(시간적 응집도) : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
    • Logical Cohesion(논리적 응집도) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
    • Coincidental Cohesion(우연적 응집도) : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

4. Python Lang. - reverse

original_str = ['A','B','C','D','E','F','G','H']
original_str.reverse()
for i in range(1, len(original_str), 2):
     print(original_str[i], end='')

🖍 GECA

  • reverse() : 리스트 타입에서 제공하는 함수로 리스트를 역순으로 뒤집어줌.
    리스트 값을 반환하는 것이 아니라 리스트 자체를 변환시킴.
    예를 들어, l = [35, 55, 75]라는 리스트가 있을 때, print(l.reverse())None으로 출력됨.

slice

List or Tuple의 원소 일부를 연속해서 또는 일정한 간격으로 꺼내 새로운 List or Tuple을 만드는 것.

original_str = "ABCDEFGH"
reversed_str = original_str[::-1]
print(reversed_str[1::2])
  • indexing: 0부터 시작
  • s[:] : list s의 원소를 모두 출력
  • s[:n] : 맨 앞부터 n-1 번까지 출력
  • s[n:]: n 번째부터 맨 끝까지 출력
  • s[-n:] : 뒤에서 n번째부터 맨 끝까지 출력
  • s[::k] : 맨 앞부터 k개씩 건너뛰며 출력
  • s[::-1] : 맨 끝부터 전부 출력
  • https://www.notion.so/Python-8d22ed2b06bc4c77895b09bcf70a551c?pvs=4

reversed()

  • python의 내장함수로 리스트에서 제공하는 함수가 아님.
original_str = "ABCDEFGH"
reversed_str = ''.join(reversed(original_str))
for i in range(1, len(reversed_str), 2):
    print(reversed_str[i], end='')
  • 'string'.join(list) : 리스트에 있는 요소 하나 하나를 합쳐, 하나의 문자열로 반환하는 파이썬의 내장함수.
  • reversed() : 역방향으로 각 문자에 접근하여 루프 돔.
  • len() : 문자열의 길이 반환하는 함수.
  • range(start, stop, step) : start부터 stop-1까지 step간격으로 숫자를 생성.

'string'.join(list)

  • ''.join(list) : 구분자를 안 넣은 경우
fruits = ['apple', 'banana', 'cherry']
result = ''.join(fruits)
print(result) # applebananacherry
  • ','.join(list) : 구분자를 ','로 넣은 경우
fruits = ['apple', 'banana', 'cherry']
result = ', '.join(fruits)
print(result) # apple, banana, cherry


참고,
기출 문제 : https://newbt.kr/시험/정보처리기사%2520실기
https://www.youtube.com/watch?v=OObXMmXchEk,
풀이 : 길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
reverse()/reversed() : https://velog.io/@code_angler/Python파이썬-reverse-와-reversed의-차이-and-리스트-튜플을-문자열로-만들기by.-join,

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

0개의 댓글