Programming/CodingTest

[이코테] [1] 코딩테스트를 위한 많이 활용하는 파이썬 문법

wave35 2024. 7. 28. 10:22

 

내장 함수

프로그램을 작성할 때 없어서 안되는 필수적인 기능을 포함합니다.

 

map 함수

  • 반복가능한(iterable) 자료형의 모든 요소에 특정 함수를 적용 후, 결과 반환
  • map(적용할 함수, 반복가능한 객체)
  • map() 함수의 반환값은 map객체로, 결과를 리스트나 튜플로 변환해야 함
  • 예제 : data = list(map(int, input().split()))

 

정렬 함수

  • sorted() 는 내장 함수, 새로운 리스트를 반환
  • sort() 리스트의 함수, 원본 리스트 자체를 정렬, 반환값은 None

 

람다 함수

# 람다 함수 [1]
print((lambda a,b : a+b)(10,5)) # 결과 15

# 람다 함수 [2]
array = [('매트',50),('로리'20),('소드'75)]
def my_key(x):
	return x[1]
a = sorted(array, key=my_key)
b = sorted(array, key=lambda x: x[1])

 

자료형 순서 제공

  • 리스트와 튜플은 순서가 있어 인덱싱 가능
  • 딕셔너리와 셋(set)은 순서가 없음

 

 

itertools

파이썬에서 반복되는 형태의 데이터를 처리하기 위해 유용한 기능들을 제공합니다.

 

순열 : 순서가 다르면 다른 경우의 수 ( 중복 허용 )

from itertools import permutations
for i in permutations([1,2,3], 2):
	print(i, end=" ")
    
# 결과 : (1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)


조합 : 중복 허용하지 않음

from itertools import combinations
for i in combinations([1,2,3], 2):
	print(i, end=" ")
    
# 결과 : (1, 2) (1, 3) (2, 3)

 

 

collections

덱(deque), 카운터(Counter), defaultdict가 같은 유용한 자료구조를 제공합니다.

 

deque

- 빠른 삽입과 삭제가 가능한 양방향 큐

from collections import deque

# 빈 deque 생성
dq = deque()

# 요소 추가
dq.append(10)  # 오른쪽 추가
dq.append(20)
dq.appendleft(5)  # 왼쪽 추가
print(dq)  # deque([5, 10, 20])

# 요소 제거
dq.pop()  # 오른쪽 제거
print(dq)  # deque([5, 10])

dq.popleft()  # 왼쪽 제거
print(dq)  # deque([10])

# 회전 (rotate)
dq = deque([1, 2, 3, 4, 5])
dq.rotate(2)  # 오른쪽으로 2칸 이동
print(dq)  # deque([4, 5, 1, 2, 3])

dq.rotate(-1)  # 왼쪽으로 1칸 이동
print(dq)  # deque([5, 1, 2, 3, 4])

 

Counter

- 요소의 갯수를 쉽게 셀 수 있는 딕셔너리

from collections import Counter

# 리스트 요소 개수 세기
nums = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counter = Counter(nums)
print(counter)  # Counter({4: 4, 3: 3, 2: 2, 1: 1})

# 문자열 문자 개수 세기
text = "hello world"
counter = Counter(text)
print(counter)  # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

# 가장 많이 등장한 요소 찾기
print(counter.most_common(2))  # [('l', 3), ('o', 2)]