Python - 기출 문제 모음

이보아·2024년 10월 16일

정보처리기사

목록 보기
11/16
post-thumbnail

정보처리기사 Python 기출 문제 모음

목차

📋20년 기출

20년 2회

a={'한국','중국','일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update(['한국','홍콩','태국'])
print(a)
✅ 정답 {'한국', '중국', '베트남', '홍콩', '태국'}

✏️문제 풀이
1. 초기 집합 생성: a는 '한국', '중국', '일본'을 포함하는 집합.
2. 요소 추가: a.add('베트남')으로 '베트남'을 추가.
3. 중복 추가 무시: a.add('중국')은 이미 존재하는 '중국'을 추가하려고 하지만, 집합에서는 중복을 허용하지 않음.
4. 요소 제거: a.remove('일본')으로 '일본'을 제거.
5. 여러 요소 추가: a.update(['한국','홍콩','태국'])으로 '한국', '홍콩', '태국'을 추가. '한국'은 이미 존재하므로 무시.


20년 4회

	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, 2, 3] 7 1 2 3 4 5 6 7 8 9

✏️문제 풀이

# 리스트 생성
lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]

# 첫 번째 서브 리스트 출력
print(lol[0])  # [1, 2, 3]

# 세 번째 서브 리스트의 두 번째 요소 출력
print(lol[2][1])  # 7

# 중첩 루프를 통해 모든 요소 출력
for sub in lol:
    for item in sub:
        print(item, end=' ')  # 요소를 한 줄에 출력
    print()  # 서브 리스트마다 줄 바꿈

📋20년 기출

21년 1회

class good :
	li = ["seoul", "kyeonggi","inchon","daejeon","daegu","pusan"]
 
g = good()
str01 = ''
for i in g.li:
	str01 = str01 + i[0]
    
print(str01)
✅ 정답 skiddp

✏️문제 풀이

1. 초기값 설정: a에 100을 할당하고, result를 0으로 초기화.
2. 반복문: for i in range(1, 3)는 i가 12일 때 반복.
3. 첫 번째 반복 (i = 1)
- result = a >> 1: 100을 오른쪽으로 1비트 시프트.
    - 100의 이진수 표현: 110010
    - 1비트 시프트: 011001 (, 50)
result = result + 1: 501을 더하여 result = 51
4. 두 번째 반복 (i = 2)
    - result = a >> 2: 100을 오른쪽으로 2비트 시프트.
    - 2비트 시프트: 001100 (, 25)
5. result = result + 1: 251을 더하여 result = 26
6. 결과 출력: 최종적으로 print(result)를 통해 26이 출력.

21년 3회

a,b = 100, 200 
print(a==b)
✅ 정답 False

✏️문제 풀이

  • 파이썬에서는 True와 False가 대문자로 구분되는 불리언 값 (주의할것)

📋22년 기출

22년 1회

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

✏️문제 풀이

def exam(num1, num2=2):  # num2의 기본값을 2로 설정
    print('a=', num1, 'b=', num2)  # num1과 num2를 출력

exam(20)  # num1에 20을 전달, num2는 기본값인 2 사용

22년 2회

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

✏️문제 풀이
1. 슬라이싱: b = a[:3] + a[12:16]

  • a[:3]: 문자열 a의 인덱스 0부터 2까지의 문자, 즉 "REM"을 가져옴.
  • a[12:16]: 문자열 a의 인덱스 12부터 15까지의 문자, 즉 "EMBE"를 가져옴.
    따라서 b는 "REM" + "BER"가 되어 "REMEMBER".
  1. 문자열 포맷팅: c = "R AND %s" % "STR"
  • %s는 문자열 포맷팅에서 사용되며, 뒤에 오는 "STR"로 교체.
  • 결과적으로 c는 "R AND STR".
  1. 출력: print(b + c)는 b와 c를 합쳐서 출력.

22년 3회

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

✏️문제 풀이
map 함수와 lambda 함수를 사용하여 리스트의 각 요소에 100을 더하는 예제
1. 초기 리스트: TestList에 [1, 2, 3, 4, 5]를 할당합니다.
2. map과 lambda 사용

  • map 함수는 주어진 함수를 리스트의 각 요소에 적용합니다.
  • lambda num: num + 100는 익명 함수로, 입력된 num에 100을 더하는 기능을 합니다.
  • map 함수는 TestList의 각 요소에 이 lambda 함수를 적용하여 새로운 값을 생성합니다.
  • 리스트 변환: list(...)를 사용하여 map의 결과를 리스트로 변환합니다.
  1. 결과 출력: print(TestList)를 통해 최종 결과인 [101, 102, 103, 104, 105]를 출력합니다.

📋21년 기출

23년 1회17번 출력 결과(20년 2회 기출문제와 동일)

a={'한국','중국','일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update(['한국','홍콩','태국'])
print(a)
✅ 정답 {'한국', '중국', '베트남', '홍콩', '태국'}

✏️문제 풀이
1. 초기 집합 생성: a는 '한국', '중국', '일본'을 포함하는 집합.
2. 요소 추가: a.add('베트남')으로 '베트남'을 추가.
3. 중복 추가 무시: a.add('중국')은 이미 존재하는 '중국'을 추가하려고 하지만, 집합에서는 중복을 허용하지 않음.
4. 요소 제거: a.remove('일본')으로 '일본'을 제거.
5. 여러 요소 추가: a.update(['한국','홍콩','태국'])으로 '한국', '홍콩', '태국'을 추가. '한국'은 이미 존재하므로 무시.


23년 2회
출력 결과는?

a = "engineer information processing"
b = a[:3]
c = a[4:6]
d = a[28:]
e=b+c+d
 
print(e)
✅ 정답 engneing

✏️문제 풀이

a = "engineer information processing"  # 문자열 a 정의
b = a[:3]  # b는 a의 인덱스 0부터 2까지의 문자 -> eng
c = a[4:6]  # c는 a의 인덱스 4부터 5까지의 문자 -> ne
d = a[28:]  # d는 a의 인덱스 28부터 끝까지의 문자 -> ing

e = b + c + d  # b, c, d를 합침 eng + ne + ing
print(e)  # 결과 출력

23년 3회
한 번에 2개를 입력받아서 분리문자로 분리해서 각각 다른 변수에 저장하려고 한다.

num1, num2 = input(). ()(분리문자)
✅ 정답 split

✏️문제 풀이

문자열 관련 함수

함수설명예제
split()문자열을 분리하여 리스트로 반환num1, num2 = input().split(',')
join()리스트의 요소를 연결하여 문자열로 만듦result = ', '.join(['apple', 'banana'])
strip()문자열의 양쪽 공백을 제거cleaned = user_input.strip()
replace()특정 문자열을 다른 문자열로 교체new_string = original_string.replace('old', 'new')
find()특정 문자열의 인덱스를 반환index = string.find('substring')

리스트 관련 함수

함수설명예제
append()리스트의 끝에 요소를 추가my_list.append('new_item')
extend()리스트에 다른 리스트의 요소를 추가my_list.extend(['item1', 'item2'])
insert()특정 인덱스에 요소를 추가my_list.insert(1, 'new_item')
remove()특정 값을 가진 첫 번째 요소를 제거my_list.remove('item_to_remove')
pop()특정 인덱스의 요소를 제거하고 반환item = my_list.pop(0)

수학 관련 함수

함수설명예제
max()주어진 iterable의 최대값을 반환largest = max([1, 2, 3, 4])
min()주어진 iterable의 최소값을 반환smallest = min([1, 2, 3, 4])
sum()주어진 iterable의 합계를 반환total = sum([1, 2, 3, 4])
sorted()주어진 iterable을 정렬하여 리스트로 반환sorted_list = sorted([3, 1, 4, 2])

기타 유용한 함수

함수설명예제
len()객체의 길이를 반환length = len(my_list)
type()객체의 타입을 반환obj_type = type(my_variable)
range()숫자의 범위를 생성for i in range(5): print(i)

📋24년 기출

24년 1회
출력 결과는?

a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"] 
str = "S"
 
for i in a:
    str = str + i[1]
 
print(str)
Colored
✅ 정답 Seynaau

✏️문제 풀이

a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"]  # 도시 이름 리스트
str = "S"  # 초기 문자열

for i in a:  # 리스트 a의 각 도시를 순회
    str = str + i[1]  # 각 도시의 인덱스 1 문자를 str에 추가

print(str)  # 최종 결과 출력
# 최종 출력: "Seynaau"

24년 2회😿
출력 결과는?

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";
 
out = f"ab{fnCalculation(a,p1)}ca{fnCalculation(a,p2)}"
print(out)
✅ 정답 ab3ca3

✏️문제 풀이

def fnCalculation(x, y):
    result = 0  # 결과를 저장할 변수 초기화
    for i in range(len(x)):  # x의 길이만큼 반복
        temp = x[i:i+len(y)]  # x의 i번째 인덱스부터 y의 길이만큼 슬라이스
        if temp == y:  # 슬라이스한 부분이 y와 같으면
            result += 1  # 결과를 1 증가
    return result  # 최종 결과 반환

a = "abdcabcabca"  # 검색할 문자열
p1 = "ab"  # 찾을 첫 번째 패턴
p2 = "ca"  # 찾을 두 번째 패턴

out = f"ab{fnCalculation(a, p1)}ca{fnCalculation(a, p2)}"  # 결과 문자열 생성
print(out)  # 결과 출력
profile
매일매일 틀깨기

0개의 댓글