Lisence/정보처리기사

정보처리기사 실기 코딩 알고리즘 Python 최신 문제 정리 해설 - 24년 대비

code2772 2024. 4. 20. 18:36
728x90
반응형

공부를 하며 정보처리기사 실기 코딩 알고리즘 문제 중 긴가 민가했던 부분만 개인 확인용으로 정리하였습니다. 혹시 보시는 분이 있을지는 모르겠지만 문제가 있을 경우도 있어 꼭 믿지 않으셨으면 좋겠습니다.

 

 

Python 문제 1년간 비중

20년 : 2문제

21년 : 3문제

22년 : 3문제

23년 : 3문제

 

 

20년도 문제

2회 2번

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

 

기본 적으로 { }는 set 으로 중복을 허용하지 않는다. 반면 중복을 허용하는 자료구조는 리스트나 배열과 같은 것으로 [ ] 표현한다. 고로 a ={'한국', '중국', '일본'} 으로 선언된 집합으로 add, update, remove 를 통해 결과 값은

{'한국', '중국', '베트남', '홍콩', '태국'}

 

 

 

4회 5번

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()

 

이 문제는 처음 Java 와 같이 println, print 의 차이 처럼 파이썬에서도 줄바꿈이 따로 있는줄 알았지만 알고보니 파이썬에서 줄바꿈을 사용하는 경우에 print 를 사용할 수 있다. 

 

주어진 코드는 이차원 리스트(lol)를 다루고 있습니다. 이차원 리스트는 리스트 안에 리스트가 포함된 구조를 가집니다.

1. lol[0]은 이차원 리스트의 첫 번째 요소인 [1, 2, 3]을 출력합니다.
2. lol[2][1]은 이차원 리스트의 세 번째 요소 중 두 번째 요소를 출력합니다. 따라서 출력 결과는 7이 됩니다.
3. 중첩된 for 루프를 통해 이차원 리스트를 반복하면서 각 요소를 출력합니다. sub은 이차원 리스트의 각 하위 리스트를 나타내고, item은 각 하위 리스트의 요소를 나타냅니다. end=' '는 각 출력 사이에 공백을 추가하고 있습니다.

결과는 : 
[1, 2, 3]
7
1 2 3
4 5
6 7 8 9

 

 

 

21년도 문제 

 

2회 7번

a = 100
result = 0
for i in range(1,3):
   result = a >> i
   result = result + 1
print(result)

 

이 문제는 먼저 range(1,3) 이면 1부터 3-1 까지 반복을 한다.

또한 print 가 for문 밖에 있기 때문에 마지막 반복문인 2번째 값만 출력하게 된다.

 

>> 기호는 시프트 연산으로 하단과 같은 방식으로 값을 구한다.

a = 100

# 오른쪽으로 1번 시프트
result1 = a >> 1  # 1100100을 오른쪽으로 1번 시프트하면 110010이 됨 (10진수로 50)

# 오른쪽으로 2번 시프트
result2 = a >> 2  # 1100100을 오른쪽으로 2번 시프트하면 11001이 됨 (10진수로 25)

print(result1)  # 출력: 50
print(result2)  # 출력: 25

2번쨰 값인 25에서 + 1 을 하여 결과는 26이 나온다. 

 

 

 

3회 14번

a,b = 100, 200 
print(a==b)

 

결과는 먼저 False 이다. 순간  C, Java 의 비교연산과 혼동이 와서 정리하였다,

 

Python : True, False

Java : true, false

C : 1, 0

 

 

22년도 문제

3회 9번

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

 

이 문제는 아무생각 업이 101, 102, 103, 104, 105 로 적은 경험으로 기억에 남게 정리하였습니다.

답은 먼저 [101, 102, 103, 104, 105] 입니다.

 

코드에서 map() 함수는 리스트의 각 요소에 함수를 적용하여 새로운 리스트를 생성합니다. map() 함수는 주어진 함수를 반복 가능한(iterable) 객체의 각 요소에 적용하고, 그 결과를 새로운 iterable 객체로 반환합니다.

그러나 map() 함수의 반환 값은 iterator 형태이므로, 결과를 확인하기 위해 list() 함수로 변환해야 합니다. list(map())는 map() 함수를 통해 반환된 iterator를 리스트로 변환하는 것을 의미합니다.

따라서 list(map(lambda num: num + 100, TestList))는 TestList 리스트의 각 요소에 100을 더한 새로운 리스트를 생성하는 것입니다.

그리고 출력 결과에서 []가 함께 출력되는 이유는 list() 함수로 변환한 결과가 리스트 형태이기 때문입니다. 리스트는 대괄호 []로 묶여 있어서 그렇습니다. 만약 list() 함수를 사용하지 않고 map() 함수만 사용한다면 iterator가 반환되어 리스트 형태로 출력되지 않습니다. 하지만 결과는 <map object at 0x7f3b31559250> 이런식으로 나올것입니다.

 

 

23년도 문제

 

23년도 문제는 대부분 이전 문제와 비슷해서 간단한 split() 문제 하나만 정리를 하겠습니다.

 

3회 16

num1, num2 = input(). ( 가 )(분리문자)

 

위 문제는 각각 분리하여 각각의 변수에 저장하기 위해 split()을 사용해야 합니다. 

 

추가적으로 자주 사용하는 함수

join(): 문자열 메서드로, 리스트의 각 요소를 구분자(separator)로 이어붙여 하나의 문자열로 만듭니다.
strip(): 문자열 메서드로, 문자열의 양쪽 끝에서 공백이나 지정된 문자를 제거합니다.
replace(): 문자열 메서드로, 문자열 내에서 지정된 문자나 문자열을 다른 문자나 문자열로 바꿉니다.
len(): 내장 함수로, 주어진 시퀀스(문자열, 리스트, 튜플 등)의 요소 수를 반환합니다.
sorted(): 내장 함수로, 주어진 시퀀스를 정렬한 새로운 리스트를 반환합니다.

반응형