코테준비-기본2

장우솔·2023년 1월 27일
0

알고리즘

목록 보기
2/21

입출력

# 입력 시간 초과 시, 공백문자 제거하기 위해 rstrip() 사용
import sys
sys.stdin.readline().rstrip()
 
  • 출력 이후에 줄 바꿈을 수행한다. print() 사용할 때마다 줄이 변경된다.
  • 변수를 문자열로 바꾸어 출력하는 소스코드 예시
    • print(’정답은’ +str(변수) + ‘입니다’)
    • print(f’정답은 {변수}입니다.’)





주요 표준 라이브러리

  • 내장함수 : input(), sorted() 등 기능포함한 기본 내장 라이브러리.



  • itertools : 파이썬에서 반복되는 데이터 형태를 처리하는 기능을 제공한다. 순열과 조합 라이브러리를 제공한다.
    from itertools import permutations # 순열
    list(permutations(객체, 뽑는 수))
    
    # 원소 중복해서 뽑기
    from itertools import product
    list(product(data, repeat=3))
    
    from itertools import combinations # 순서상관x
    
    from itertools import combinations_with_replacement # 순서상관x
    





  • heapq : 힙 기능을 제공하는 라이브러리, 우선순위 큐 기능을 구현하기 위해 사용
    • 시간복잡도 : NLog(N)
    • 원소 삽입 : heapq.heappush()
    • 원소 꺼냄 : heapq.heappop()

하하 글씨가 너무 엉망이네여....^^......

# 힙 정렬 예시 - 오름차순
import heapq
def heapsort(iterable):
	h=[]
	result=[]
	#모든 원소 차례대로 힙에 삽입
	for i in interable:
		heapq.heappush(h,i)
	#힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
	for _ in range(len(h)):
		result.append(heapq.heappop(h))
	return result
result = heapsort([1,3,5,7,4,0])
print(result)

# 힙 정렬 예시 - 내림차순
import heapq
def heapsort(iterable):
	h=[]
	result=[]
	#모든 원소 차례대로 힙에 삽입
	for i in interable:
		heapq.heappush(h,-i)
	#힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
	for _ in range(len(h)):
		result.append(-heapq.heappop(h))
	return result
result = heapsort([1,3,5,7,4,0])
print(result)





  • bisect : 이진탐색 기능 제공
    • 시간 복잡도 : O(logN)
    • bisect_left(a,x) : 정렬된 순서 유지하면서 리스트 a에 데이터 x 삽입할 가장 왼쪽 인덱스 찾는 메서드
    • bisect_right(a,x) : 정렬된 순서 유지하도록 리스트 a에 데이터 x 삽입할 가장 오른쪽 인덱스 찾는 메서드





  • collections : 덱, 카운터 등 유용한 자료구조를 포함한 라이브러리
    • deque() : 큐 구현 가능, 리스트에서 마지막 데이터를 삭제 혹은 삽입하는데 앞쪽에 있는 원소 처리할 때 시간이 많이 소요될 수 있다. deque는 리스트 자료형과 다르게 인덱싱, 슬라이싱 기능 사용 불가. 하지만 연속적으로 나열된 데이터 시작부분이나 끝부분에 데이터를 삽입하거나 삭제할 때는 매우 효과적이다. deque는 스택이나 큐의 기능을 모두 포함한다고 볼 수 있다.
      • 첫번째 원소 제거 : popleft(), 마지막 원소 제거 : pop()
      • 첫번째 인덱스에 원소 삽입 : appendleft(x), 마지막 원소 삽입 : append(x)
    • Counter() : 등장횟수 세는 기능
      from collections import Counter
      counter=Counter(['red', 'blue', 'blue', 'green'])
      print(counter['blue'])




  • math : 팩토리얼, 최대공약수, 삼각함수 관련 함수부터 파이 같은 상수 포함
    import math
    math.factorial(5) #팩토리얼
    math.gcd(21,14) #최대공약수
    math.pi 
    math.e
    
profile
공부한 것들을 정리하는 블로그

0개의 댓글