정보처리기사 실기에서 프로그래밍 언어는 C언어, JAVA, Python 3개로 나누어진다.
이번에는 프로그래밍 언어 중 가장 쉽고 적은 출제 비중을 가지는 파이썬 기출 문제를 풀어보자.
1. 2023년 2회차
a = "Engineer Information Processing"
b = a[:3]
c = a[4:6]
d = a[28:]
e=b+c+d
print(e)
정답 : Engneing
파이썬의 슬라이싱에 대한 문제이다.
b는 a[:3]이므로 'Eng',
c는 a[4:6]이므로 'ne',
d는 a[28:]이므로 'ing'
e는 b+c+d로 정답은 'Engneing'이다.
2. 2023년 1회차, 2020년 2회차
a={'일본','중국','한국'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update(['홍콩','한국','태국'])
print(a)
정답 : {'중국', '태국', '한국', '홍콩', '베트남'}
파이썬의 비시퀀스 자료형인 세트형(Set)에 대한 문제이다.
세트형은 중복된 원소를 허용하지 않는 성질을 가지고 있다.
세트형에서 add는 1개의 값을 update는 여러개의 값을 추가하는 메서드이다.
remove는 특정 값을 제거하는 메서드이다.
따라서 순서대로 하면
a={'일본', '중국', '한국', '베트남'}
a={'중국', '한국', '베트남'}
a={'중국', '한국', '베트남', '홍콩', '태국'}의 결과를 가져오게 된다.
⭐ 세트형은 순서가 상관없으므로 출력순서는 상관없다.
3. 2022년 3회차
T = [1,2,3,4,5]
T = list(map(lambda num : num + 100, T))
print(T)
정답 : [101, 102, 103, 104, 105]
파이썬의 map함수와 lambda함수에 대한 문제이다.
먼저 map함수는 map(함수, 리스트)의 형태를 가진다. 리스트의 요소를 함수에 전달하여 반복 수행한다.
여기서 함수는 lambda num : num + 100로 리스트 T의 원소에 100을 더한 값을 반환한다.
따라서 리스트 T는 [101, 102, 103, 104, 105]로 출력된다.
4. 2022년 2회차
a = "REMEMBER NOVEMBER"
b = a[:3] + a[12:16]
c = "R AND %s" % "STR"
print(b+c)
정답 : REMEMBER AND STR
포맷스트링을 통한 문자열 출력 문제이다.
a[:3]은 'REM',
a[12:15]는 'EMBE'로
b는 'REMEMBE'
c는 %s자리에 문자열 'STR'을 대입하여 'R AND STR'의 결과가 나온다.
따라서 b+c는 'REMEMBER AND STR'이다.
5. 2022년 1회차
def func(num1, num2=2):
print('a=', num1, 'b=', num2)
func(20)
정답 : a= 20 b= 2
사용자 정의 함수와 디폴트 매개변수에 대한 문제이다.
파이썬에서 사용자 정의 함수는 함수 실행시 매개변수를 입력받을 수도 있고 함수를 만들 때 디폴트 값으로 정의할 수도 있다.
함수 func에서는 num1은 함수 실행시 입력받는 매개변수이고, num2는 2로 정의된 디폴트 매개변수이다.
따라서 정답은 a= 20 b= 2이다.
6. 2021년 3회차
a,b = 100, 200
print(a==b)
정답 : False
파이썬의 비교연산자에 대한 문제이다.
참, 거짓을 비교할 때
파이썬은 True, False
자바는 true, false
C는 1, 0을 출력한다.
여기서는 a와 b가 100, 200으로 상이하므로 False를 출력한다.
7. 2021년 2회차
a = 100
result = 0
for i in range(1,3):
result = a >> i
result = result + 1
print(result)
정답 : 26
시프트 연산자에 대한 문제이다.
시프트 연산자는 << 또는 >>로 비트를 왼쪽이나 오른쪽으로 이동시키는 연산자이다.
먼저 100을 2진수로 변환한다. 그러면 다음과 같다.

for문의 i는 1과 2이다.
오른쪽으로 1만큼 이동시키면

이렇게 된다. 그러면 result는 (32 + 16 + 2) +1 이므로 51이다.
그리고 오른쪽으로 2만큼 이동시키면

result는 (16 + 8 + 1) + 1로 정답은 26이 된다.
8. 2021년 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
클래스를 활용한 문제이다.
먼저 good()클래스의 객체 g를 생성한다.
클래스 good의 리스트 li 원소를 i로 하고 그 i의 첫번째 원소를 str01에 더한다.
따라서 's' + 'k' + 'i' + 'd' + 'd' + 'p'를 합쳐 정답은 'skiddp'이다.
9. 2020년 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
123
45
6789
리스트에서 값을 출력하는 문제이다.
먼저 lol은 2차원 배열이다.
그래서 lol[0]은 lol의 첫번째 리스트 [1, 2, 3] 이고
lol[2][1]은 3번째 리스트의 2번째 원소 7이다.
그리고 2중 for문에서 sub은 lol 내부 각각의 1차원 리스트이고 item은 sub 내부의 각각의 원소이다.
end=''를 사용해서 item을 붙이고 print()를 사용해서 sub이 하나 끝날 때마다 줄을 바꿔서 출력한다.
따라서 정답은 123
45
6789
이다.
댓글