알고리즘

파이썬 기본 문법 복습

leeeee.yeon 2021. 6. 18. 16:27

'이것이 취업을 위한 코딩 테스트다' 참고

 

리스트 컴프리헨션
arr = [i for i in range(20) if i % 2 == 1]

print(arr)

// [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

언더바(_)의 역할
for _ in range(5):
	print("Hello World")

반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 사용

 

N*M 크기의 2차원 리스트 초기화
n = 3
m = 4
arr = [[0]*m for _ in range(n)]

// [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
리스트 관련 메서드
  • append()
  • sort()
  • reverse()
  • insert() - 시간 복잡도 O(N), 동작이 느리므로 남발하면 '시간 초과'로 테스트를 통과하지 못할 수 있음
  • count()
  • remove() - 시간 복잡도 O(N)

 

튜플
  •  한 번 선언된 값 변경 불가
  • 소괄호 이용
  • 그래프 알고리즘 구현할 때 자주 사용

 

사전 자료형
  • 키와 값의 쌍을 데이터로 가지는 자료형
  • 리스트보다 훨씬 빠르게 동작
data = dict ()
  • 위와 같은 방법으로 사전 초기화
  • keys() 함수, values() 함수

 

집합 자료형
  • 중복을 허락하지 않는다.
  • 순서가 없다.
  • 초기화 - set() 함수, 중괄호( { } )
  • 합집합 ' | ' / 교집합 '&' / 차집합 '-'
  • add() - 하나의 데이터 추가
  • update() - 여러 개의 값 한번에 추가
  • remove() - 특정한 값 제거

  • if ~ elif ~ else 문
  • 논리 연산자: and, or, not
  • in 연산자, not in 연산자
  • 아무것도 처리하고 싶지 않을 때 pass문
  • range(시작 값, 끝 값+1)
  • 함수 안에서 함수 밖의 변수 데이터 변경해야 하는 경우: 함수에서 global 키워드 이용
  • 람다 표현식
  • data = list(map(int, input().split()))
import sys
sys.stdin.readline().rstrip()
  •  input()이 느릴 때 사용
  • answer = 7
    print(f"정답은 {answer}입니다.")
    
    // 정답은 7입니다.

 


중요 라이브러리들
  • 내장 라이브러리
    • sum(), max(), min(), eval(), sorted()
  • itertools - 순열, 조합 라이브러리 제공
    • permutations() - 순열
    • combinations() - 조합
    • product() - 중복을 허용한 순열
    • combinations_with_replacement() - 순서를 고려하지 않는 조합
  • -- 여기부터는 공부하면서 나중에 추가하자 --
  • heapq - 힙 기능 제공, 우선순위 큐 기능을 구현하기 위해 사용
  • bisect - 이진 탐색 기능 제공
  • collections - 덱, 카운터 등 유용한 자료구조 포함
    • deque - 큐를 구현
    • 인덱싱, 슬라이싱 기능 사용할 수 없음
    • 첫 번째 원소 제거, 삽입 - popleft(), appendleft(x)
    • 마지막 원소 제거, 삽입 - append(x), pop()
  리스트  deque
가장 앞쪽에 원소 추가 O(N) O(1)
가장 뒤쪽에 원소 추가 O(1) O(1)
가장 앞쪽에 있는 원소 제거 O(N) O(1)
가장 뒤쪽에 있는 원소 제거 O(1) O(1)
  • (collections 라이브러리 이어서)
    • Counter - 등장 횟수를 세는 기능 제공
from collections import Counter

counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])

print(counter['blue'])
print(counter['green'])
print(dict(counter))

'''
3
1
{'red': 2, 'blue': 3, 'green': 1}
'''
  • math
    • factorial()
    • sqrt()
    • gcd()

여유가 있으면 자신만의 라이브러리 (팀 노트)를 만들자