정보처리기사 실기 파이썬 개념정리

Alchemist·2025년 10월 6일

정보처리기사

목록 보기
114/114

✨ 1. 입력 / 출력과 형 변환

📘 개념 설명

  • input()은 문자열을 입력받는다.
  • 공백으로 구분된 여러 값을 받을 땐 .split()을 사용한다.
  • 문자열을 숫자로 연산하려면 반드시 int() 또는 float()로 형 변환이 필요하다.
  • 문자열 결합 시 +를 사용할 수 있지만, 숫자는 반드시 str()로 변환해야 한다.

🔹 기본 예시

a, b = map(int, input().split())
print(f"{a} + {b} = {a + b}")

📝 연습문제

다음 코드를 실행했을 때의 출력 결과를 작성하시오.
(입력값은 2 3이다.)

print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input().split()
num1 = int(num1)
num2 = int(num2)
print(num1, num2)
print(f"{num1} + {num2} = {num1 + num2}")

✅ 해설
1. input()"2 3"
2. .split()['2', '3']
3. int() 변환 → num1=2, num2=3
4. 출력 흐름:

파이썬 입출력에 대한 문제입니다.
2 3
2 + 3 = 5

✨ 2장. 자료형과 type() 함수

📘 개념 설명

  • type()은 객체의 자료형을 반환한다.
  • int, float, str, tuple, set, dict 등이 주요 자료형이다.
  • isinstance(x, int)는 좀 더 권장되는 방식이다.

🔹 예시

type(100)      # <class 'int'>
type('100')    # <class 'str'>
type(100.0)    # <class 'float'>

📝 연습문제

def func(value):
    if type(value) == type(100):
        return 100
    elif type(value) == type(""):
        return len(value)
    else:
        return 20

a = '100.0'
b = 100.0
c = (100, 200)
print(func(a) + func(b) + func(c))

✅ 해설

변수자료형반환값
'100.0'strlen('100.0') → 5
100.0float20
(100,200)tuple20
  • 출력 결과:
45

✨ 3장. 문자열 슬라이싱

📘 개념 설명

  • 문자열은 불변 객체(immutable) 이며, 인덱스로 접근 가능하다.
  • 문자열[start:end]start부터 end-1까지
  • 부분 문자열을 잘라 결합할 수 있다.

🔹 예시

a = "REMEMBER NOVEMBER"
print(a[:3])      # REM
print(a[12:16])   # EMBE

📝 연습문제

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

✅ 해설

  • a[:3]"REM"

  • a[12:16]"EMBE"

  • c"R AND STR"

  • b + c"REMEMBE" + "R AND STR" = REMEMBER AND STR

  • 출력:

REMEMBER AND STR

✨ 4장. 리스트와 슬라이싱

📘 개념 설명

  • 리스트는 가변 객체(mutable) 로 수정 가능하다.
  • 인덱스: 0부터 시작.
  • lst[::2] → 짝수 인덱스, lst[1::2] → 홀수 인덱스.

🔹 예시

lst = [1,2,3,4,5,6]
print(lst[::2])  # [1,3,5]
print(lst[1::2]) # [2,4,6]

📝 연습문제

def func(lst):
    for i in range(len(lst)//2):
        lst[i], lst[-i-1] = lst[-i-1], lst[i]

lst = [1,2,3,4,5,6]
func(lst)
print(sum(lst[::2]) - sum(lst[1::2]))

✅ 해설

  • 리스트 뒤집기 후: [6,5,4,3,2,1]

  • 짝수 인덱스 합: 6 + 4 + 2 = 12

  • 홀수 인덱스 합: 5 + 3 + 1 = 9

  • 결과: 12 - 9 = 3

  • 출력:

3

✨ 5장. 딕셔너리 내포와 집합(Set)

📘 개념 설명

  • dict{key: value} 형태.
  • 집합(set)은 중복이 없고, 순서가 없다.
  • & 연산자는 교집합을 구한다.
dst = {i: i*2 for i in [1,2,3]}  # {1:2, 2:4, 3:6}
s = set(dst.values())             # {2,4,6}

📝 연습문제

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

✅ 해설

  • dst = {1:2, 2:7, 3:6}

  • s = {2,4,6,99}

  • 교집합 {2,6} → 길이 2

  • 출력:

2

✨ 6장. 함수의 기본값 인자

📘 개념 설명

  • 함수 정의 시 인자에 기본값을 줄 수 있다.
  • 호출 시 값을 생략하면 기본값이 사용된다.

🔹 예시

def add(a, b=10):
    return a + b

📝 연습문제

def exam(num1, num2=2):
    print('a=', num1, 'b=', num2)
exam(20)

✅ 해설

  • num1 = 20, num2는 기본값 2 사용

  • 출력:

a= 20 b= 2

✨ 7장. 람다(lambda)와 map()

📘 개념 설명

  • lambda는 간단한 익명 함수 정의 방법이다.
  • map()은 리스트 요소 전체에 함수를 적용한다.

🔹 예시

nums = [1,2,3]
print(list(map(lambda x: x+10, nums)))  # [11,12,13]

📝 연습문제

TestList = [1,2,3,4,5]
TestList = list(map(lambda num : num + 100, TestList))
print(TestList)

✅ 해설

  • 각 요소에 100을 더함 → [101,102,103,104,105]

✨ 8장. 중첩 리스트(for문 2중 순회)

📘 개념 설명

  • 리스트 안의 리스트를 순회할 때는 이중 for문을 사용한다.

📝 연습문제

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol:
    for item in sub:
        print(item, end = '')
    print()

✅ 해설
1. lol[0][1, 2, 3]
2. lol[2][1]7
3. 반복문 출력:

123
45
6789

✨ 9장. 부분 문자열 탐색

📘 개념 설명

  • 문자열에서 특정 패턴이 등장하는 횟수를 구할 때, 슬라이싱으로 부분 문자열을 비교하는 기법이 자주 쓰인다.

📝 연습문제

def fnCalculation(x,y):
    result = 0
    for i in range(len(x)):
        temp = x[i:i+len(y)]
        if temp == y:
            result += 1
    return result

a = "abdcabcabca"
p1 = "ab"
p2 = "ca"
print(f"ab{fnCalculation(a,p1)}ca{fnCalculation(a,p2)}")

✅ 해설

  • "ab" 3회

  • "ca" 3회
    "ab3ca3"

  • 출력:

ab3ca3

✨ 10장. 트리 구조와 재귀

📘 개념 설명

  • 재귀함수를 이용해 트리 탐색을 구현할 수 있다.
  • 이진 트리의 부모 인덱스 = (i-1)//2

📝 연습문제

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)):
        nodes[(i - 1) // 2].children.append(nodes[i])
    return nodes[0]

def calc(node, level=0):
    if node is None:
        return 0
    return (node.value if level % 2 == 1 else 0) + sum(calc(n, level + 1) for n in node.children)

li = [3,5,8,12,15,18,21]
root = tree(li)
print(calc(root))

✅ 해설

  • 트리 구조:
        3
      /   \
     5     8
   /  \   / \
 12  15 18 21
  • 홀수 레벨: 5 + 8 = 13
  • 출력:
13
profile
html_programming_language

0개의 댓글