Search
Duplicate
🥋

코딩테스트를 위한 python 문법

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Python
Algorithm
Scrap
태그
9 more properties

코딩테스트를 위한 python 문법

코테 언어를 고민하다 파이썬으로 정착하기로 생각하면서 필요한 문법 정리
출처: 이코테

숫자 자료형 ( Number )

정수형

a = 1 b = 0 c = -1 print(a, b, c) # 1 0 -1
Python
복사

실수형

a = 1.23 b = 3. c = -13.2 print(a, b, c) # 1.23 3.0 -13.2 # 지수형 d = 1e4 e = 3000e-2 print(d, e) # 10000.0 30.0
Python
복사
컴퓨터의 시스템은 수 데이터를 처리할 때 2진수를 이용하며, 실수를 처리할 때 부동 소수점 방식을 이용한다.
2진수 체계 소수계산의 오차가 발생하는 대표적인 예시로는 0.3 + 0.6 이 0.8999999999999999 이 나오는 경우이다. 파이썬에서 이를 처리하는 방법으로는 round() 함수(반올림)를 이용한다.
a = 0.3 + 0.6 print(a, round(a)) # 0.8999999999999999 1
Python
복사

연산

a = 1 b = 2 print(a / b) # 나누기 0.5 print(a % b) # 나머지 1 print(a // b) # 몫 0 print(a ** b) # 거듭제곱 1
Python
복사

리스트 자료형 ( List )

c++의 vector, JS의 array와 유사함

선언

a = [1, 2, 3, 4] print(a) # [1,2,3,4]
Python
복사

인덱싱, 슬라이싱

a = [1, 2, 3, 4] # 인덱싱 print(a[0]) # 1 print(a[-1]) # 4 print(a[-2]) # 3 # 변경 a[3] = 5 print(a) # [1, 2, 3, 5] # 슬라이싱 print(a[1:3]) # [2, 3] print(a[:-1]) # [1, 2, 3] print(a[1:-1]) # [2, 3]
Python
복사

리스트 컴프리헨션 ( list comprehension )

# 1차원 리스트 초기화 a = [0] * 5 print(a) # [0, 0, 0, 0, 0] # 2차원 리스트 초기화 a = [[0] * 5 for _ in range(3)] print(a) # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] # 1~9 중 홀수인 제곱수 리스트 a = [i**2 for i in range(1, 10) if i % 2 == 1] # [1, 9, 25, 49, 81]
Python
복사

리스트 메소드

a = [2, 3, 4] # 추가 a.append(1) # [2, 3, 4, 1] # 정렬 a.sort() # 오름차순 [1, 2, 3, 4] a.sort(reverse = True) # 내림차순 [4, 3, 2, 1] a.reverse() # 뒤집기 [1, 2, 3, 4] # 삽입 (idx, value) a.insert(1, 2) # [1, 2, 2, 3, 4] # 개수 a.count(2) # 2 # 제거 ( 앞에서 가장 먼저 나오는 하나만 제거) a.remove(2) # [1, 2, 3, 4]
Python
복사

문자열 자료형 ( String )

# 선언 a = 'Hi' print(a) # Hi # 연산 b = 'Bye' print(a + " " + b) # Hi Bye # 반복 print(a * 3) # HiHiHi # 슬라이싱 print(b[1:3]) # ye
Python
복사

튜플 자료형 ( Tuple )

# 선언 a = (1, 2, 3, 4) print(a) # (1, 2, 3, 4) # 선언 후 변경 불가 a[2] = 3 # 'tuple' object does not support item assignment
Python
복사

딕셔너리 자료형 ( Dictionary )

key: value
data = {} data['a'] = 'aaa' # { 'a': 'aaa' } data['b'] = 'bbb' # { 'a': 'aaa', 'b': 'bbb' } # key data.keys() # dict_keys(['a', 'b']) # value data.values() # dict_values(['aaa', 'bbb'])
Python
복사

셋 자료형 ( Set )

중복 불가, 순서 없음
data = set([1, 1, 2]) print(data) # { 1, 1, 2 } data = { 1, 1, 2 } print(data) # { 1, 1, 2 }
Python
복사

연산

a = { 1, 2, 3 } b = { 3, 4, 5 } # 합집합 print(a | b) # {1, 2, 3, 4, 5} # 교집합 print(a & b) # { 3 } # 차집합 print(a - b) # { 1, 2 }
Python
복사

메소드

a = { 1, 2, 3 } # 추가 a.add(4) # { 1, 2, 3, 4 } # 여러 개 추가 a.update([5, 6]) # { 1, 2, 3, 4, 5, 6 } # 삭제 a.remove(3) # { 1, 2, 4, 5, 6}
Python
복사

조건문

if con: elif con: else: 1 in [1, 2, 3] # True 4 not in [1, 2, 3] # True
Python
복사

반복문

# while while con: # for for var in list:
Python
복사

함수

# 함수 def add(a, b): return a + b add(1, 2) # 3 # lambda 표현식 add = lambda a, b: a + b add(1, 2) # 3
Python
복사

입출력

# 개수 n = int(input()) # 데이터 data = list(map(int, input().split())) # readline 사용시 import sys data = sys.stdin.readline().rstrip()
Python
복사

주요 라이브러리

내장함수

# 합 sum([1, 2, 3]) # 6 # 최소값, 최대값 min(1, 2, 3) # 1 max(1, 2, 3) # 3 # 문자열 > 수식 eval("3+5") # 8 # key 정렬 sorted([('에이', 5), ('비', 1), ('씨', 2)], key = lambda x: x[1]) # [('비', 1), ('씨', 2), ('에이', 5)]
Python
복사

itertools - 순열, 조합

# 순열 from itertools import permutations a = ['A', 'B', 'C'] res = list(permutations(a, 3)) print(res) # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')] # 조합 from itertools import combinations a = ['A', 'B', 'C'] res = list(combinations(a, 2)) print(res) # [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')] # 중복순열 from itertools import product a = ['A', 'B', 'C'] res = list(product(a, repeat = 2)) print(res) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')] # 중복조합 from itertools import combinations_with_replacement a = ['A', 'B', 'C'] res = list(combinations_with_replacement(a, 2)) print(res) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
Python
복사

heapq - 힙, 우선순위큐

파이썬의 힙은 최소힙으로 구성되어 있어서, 원소 전체를 힙에 넣었다 빼는 것으로 오름차순 정렬이 안료됨. ( O(NlogN))
# 추가 heapq.heappush() # 제거 heapq.heappop() # 정렬 import heapq def heapsort(iterable): h = [] res = [] for value in iterable: heapq.heappush(h, value) # (h, -value) for i in range(len(h)): res.append(heapq.heappop(h)) # ( -heapq.heappop(h) ) return res res = heapsort([1,3,5,7,9,2,4,6]) print(res) # [1, 2, 3, 4, 5, 6, 7, 9] #반대로 내림차순의 경우엔 푸시와 팝의 부호를 바꾸는 방법으로 진행
Python
복사

bisect - 이진 탐색

이진탑색 / 정렬된 배열에서 효과적으로 사용 가능
배열 a에서 각각 왼쪽과 오른쪽에서 삽입할 원소 x의 인덱스를 찾는 함수
bisect_left(a, x) bisect_right(a, x)
Python
복사

collections - 덱, 카운터

덱(deque) - 인덱싱, 슬라이싱 불가능 / 데이터의 시작과 끝 부분 데이터 추가/삭제가 용이
from collections import deque data = deque([2, 3, 4]) data.appendleft(1) data.append(5) print(data) # deque([1, 2, 3, 4, 5])
Python
복사
카운터(counter) - 개수
from collections import Counter counter = Counter(['red', 'blue', 'red', 'green', 'blue']) print(counter['blue']) # 2 print(dict(counter)) # {'red': 2, 'blue': 2, 'green': 1 }
Python
복사

math - 팩토리얼, 제곱근, gcd, 삼각함수, 수학 상수

import math print(math.factorial(5)) # 120 print(math.sqrt(4)) # 2.0 print(math.gcd(25, 15)) # 5
Python
복사