코딩테스트를 대비한 파이썬 자주 쓰이는 문법 모음
리스트
리스트 생성: [ ], list()
크기가 N인 1차원 리스트 초기화: array = [0] * 10
자주 쓰이는 함수:
.append()
.remove()
.sort()
.sort(reverse=True) <- 내림차순 정렬
.reverse()
.insert( (index값), (삽입값) )
.count(특정값)
.remove(특정값)
*리스트 컴프리헨션 -> 리스트를 초기화하는 방법 중 하나 (리스트 초기화 시 익숙해질 필요 있음)
예시 1 (0~19의 수 중 짝수만 포함하는 리스트):
array = [i for i in range(20) if i % 2 == 0]
예시2 (N x M 사이즈 2차원 리스트 초기화):
N = 3
M = 4
array = [[0] * M for _ in range(N)] -> [[0,0,0,0], [0,0,0,0], [0,0,0,0]]
예시3 (remove_set에 포함되지 않은 값만 추출)
result = [i for i in a if i not in remove_set]
튜플
주로 그래프 알고리즘을 구현할 때 자주 사용된다.
리스트에 비해 상대적으로 공간 효율적이고, 일반적으로 각 원소의 성질이 다를 때 주로 사용
예시 -> (x, 1)
딕셔너리
key: value 쌍으로 구성된 자료형
해시 테이블을 이용하며, 기본적으로 데이터 검색 및 수정에 있어서 O(1) 의 시간 복잡도를 가짐
생성: data = dict()
key_list = data.key()
value_list = data.values()
if 'key’ in data: <- in을 통해 key값 조회 가능 (in은 iterable 자료형에 모두 사용 가능)
집합 (Set)
중복 허용 불가, 순서 없는 자료형
생성: set(), { }
| <- 합집합(원화 기호 위에 있는 키)
& <- 교집합
- <- 차집합
.add()
.update()
.remove()
기타
몫 연산자 //
나머지 연산자 %
거듭제곱 연산자 **
*입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드(암기)
data = list( map( int, input().split() ) )
a, b, c = map( int, input().split() )
*입력 문자 크기가 클 때는 시간복잡도를 고려해 아래 코드를 이용
import sys
# 문자열 입력받기
data = sys.stdin.readline().rstrip()
print(data)
f string
f" ~~~ {} ~~~ {}~~"
eval()
수식으로 이루어진 문자열을 함수의 인자값에 대입하면 수식의 결과값을 반환한다.
시험 전 필수 암기 (시간 절약 매우 됨. 꼭 이해하고 가기)
math.gcd (최대공약수)
math.lcm (최소공배수)
itertools 라이브러리
- combinations( list, r ) # r개의 조합 뽑기
- combinations_with_replacement( list, r ) # 중복 포함 r개의 조합 뽑기
- product()
- permutations( list, r ) # r개의 순열 뽑기 (r 지정 안하면 최대 길이 순열)
- product(list1,list2,repeat=1) # list1과 list2의 모든 짝 구해줌
- product(list, repeat=3) == product( list , list , list ,repeat=1)
이진탐색
from bisect import bisect_left, bisect_right
bisect_left(list, criterion) # 리스트 내 특정 값( criterion ) 왼쪽 인덱스 알려준다
bisect_right(list, criterion) # 리스트 내 특정 값 바로 오른쪽 인덱스 알려준다