콘텐츠로 이동

SET 18 — 서술형 모범답안


1. 출력 20 10

y = x는 그 순간 x의 값 10y에 대입한다. 그 뒤 x = 20으로 x만 새 값을 가리키게 바뀌고, y는 이미 받아둔 10 그대로. (정수는 변경 불가능하므로 재대입이 y에 영향을 주지 않음)

2. 출력 [2, 3, 4] [5, 4, 3, 2, 1] [4, 5]

nums[1:4]는 인덱스 1~3 → [2, 3, 4]. nums[::-1]은 전체 뒤집기 → [5, 4, 3, 2, 1]. nums[-2:]는 뒤에서 둘째부터 끝까지 → [4, 5].

3. 출력 10

재귀로 f(4) = 4 + f(3) = 4 + 3 + f(2) = ... = 4 + 3 + 2 + 1 + f(0). f(0) = 0에서 멈춰 합 10.

4. 출력 heo

문자를 하나씩 보며 "l"이 아닐 때만 result에 이어 붙인다. hello에서 l 두 개를 빼면 heo.

5.

def rev(s):
    r = ""
    for ch in s:
        r = ch + r   # 새 글자를 앞에 붙이면 뒤집힌다
    return r

6.

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

7.

def count_ge(nums, t):
    count = 0
    for n in nums:
        if n >= t:
            count += 1
    return count

8.

문제: 리스트 nums의 유효한 인덱스는 0, 1, 2뿐인데 nums[3]은 범위를 벗어나 IndexError가 난다. 고친 코드:

nums = [1, 2, 3]
print(nums[-1])   # 또는 nums[len(nums) - 1]  → 3