정보처리기사

[정보처리기사 실기 오답노트] - Python

sson-coding 2025. 11. 11. 18:30

2022-3-9

a = [1, 2, 3, 4, 5]
a = list(map(lambda num : num + 100, a))
print(a)
  • 정답 : [101,102,103,104,105]

핵심개념

함수 설명

lambda 함수를 한 줄로 간단히 표현할 때 사용 (익명 함수)
map(func, iterable) 반복 가능한 객체(iterable)의 각 원소에 함수를 적용

풀이

  1. a = [1, 2, 3, 4, 5]
    • 리스트 a 정의
  2. map(lambda num : num + 100, a)
    • 리스트 a의 각 원소(num)에 num + 100 수행
  3. list(...)
    • map 객체를 리스트로 변환
  4. print(a)
    • 결과 리스트 출력

2022-2-13

a = "REMEMBER NOVEMBER"
b = a[0:3] + a[12:16]
c = "R AND %s" % "STR"
print(b + c)

풀이과정

R(0) E(1) M(2) E(3) M(4) B(5) E(6) R(7)  (8) 
N(9) O(10) V(11) E(12) M(13) B(14) E(15) R(16)

  1. a[0:3] → REM
  2. a[12:16] → EMBE
  3. b → REMEMBE
  4. c → R AND STR
  5. print(b+c) → REMEMBER AND STR

2025-1-17

class Node:
    def __init__(self, value):
        self.value = value
        self.children = []

def tree(li):
    nodes = [Node(i) for i in li]
    for i in range(1, len(li)):
        parent_index = (i - 1) // 2
        nodes[parent_index].children.append(nodes[i])
    return nodes[0]

def s(node, level=0):
    if not node:
        return 0

    total = node.value if level % 2 else 0

    for child in node.children:
        total += s(child, level + 1)

    return total

li = [3, 5, 8, 12, 15, 18, 20]
root = tree(li)

print(s(root))
  • 정답 : 13

풀이

  1. 트리 구조 (li = [3, 5, 8, 12, 15, 18, 20])
    • 괄호 속 숫자는 리스트 인덱스,
    • level은 깊이 (루트: 0, 자식: 1, 손자: 2)
  2. 3(0) / \\ 5(1) 8(2) / \\ / \\ 12(3) 15(4) 18(5) 20(6)
  3. 레벨별 노드값
    • level 0: 3
    • level 1: 5, 8
    • level 2: 12, 15, 18, 20
  4. s() 함수의 합산 규칙
    • level % 2 == 1 (홀수 레벨)만 더함
    • → 합산 대상: level 1 노드들
  5. 계산 과정
    • level=0: 3 (짝수) → 합산 안 함
    • level=1: 5 + 8 = 13
    • level=2: (12, 15, 18, 20은 짝수 레벨) → 합산 안 함
  6. 결과
  7. print(s(root)) # 13
  8. 최종 출력값: 13

2025-2-17

lst = [1, 2, 3]
dst = {i: i*2 for i in lst}
s = set(dst.values())
lst[0] = 99
lst[2] = 7
dst[2] = 7
s.add(99)
print(len(s & set(dst.values())))
  • 정답 : 2

핵심개념

  • set()
    • 집합 자료형으로, 중복을 허용하지 않는다.
  • 집합 연산자 & (교집합)
    • A & B : 두 집합 A, B의 공통 원소를 반환한다.

풀이

  1. lst = [1, 2, 3]
  2. dst = {i: i*2 for i in lst}
    • dst = {1: 2, 2: 4, 3: 6}
  3. s = set(dst.values())
    • s = {2, 4, 6}
  4. lst[0] = 99, lst[2] = 7
    • lst = [99, 2, 7]
    (이미 생성된 dst는 변하지 않음)
  5. dst[2] = 7
    • dst = {1: 2, 2: 7, 3: 6}
    • dst.values() = [2, 7, 6]
  6. s.add(99)
    • s = {2, 4, 6, 99}
  7. s & set(dst.values()) = {2, 6}
    • len({2, 6}) = 2