컴퓨터사이언스/파이썬 & 알고리즘

코딩테스트를 대비한 파이썬 자주 쓰이는 문법 모음

누군가의 이야기 2022. 8. 30. 18:01
728x90

리스트

리스트 생성: [ ], 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) # 리스트 내 특정 값  바로 오른쪽 인덱스 알려준다

 

 

 

728x90