넘치게 채우기

[Python] 파이썬 코테의 기술 본문

PS/언어별 스킬모음

[Python] 파이썬 코테의 기술

riveroverflow 2023. 8. 24. 22:52
728x90
반응형

입출력

import sys

sys.stdin.readline() # 한줄 전체 입력받기. input()보다 빠르게 입력받을 수 있다. 개행문자 \n도 딸려오니 주의.

 

a, b, c = map(int, sys.stdin.readline().split()) # a, b, c에 각각 넣기

 

형변환

int(x) # int로 변환

str(x) # 문자열로 변환

float(x) # 실수 타입 변환

chr(x) # 문자로 변환

bool(x) # 참/거짓값으며 변환(0이나 null이 아닌경우 모두 True)

 

수학

1e9 = 10^9

2e9 =  2 * 1e9 (INT_MAX에 거의 근접한 값이다)

1e9 + 7 # 보통 온라인 저지 사이트나 알고리즘 대회에서 값이 너무 커질 때, 오버플로우를 막기 위해서 1e9 + 7로 나누라고 한다.

쓰이는 이유:

 1. int 안에 들어오는 큰소수 : 소수여서 모듈러 연산의 값의 중복이 잘 없어 정확한 문제풀이가 가능하다.

 2. 쉬운 표기 : 간편한 표기의 큰 소수여서 기억하기 쉽다.

 3. 모듈러 곱셈 역원 : 페르마 소정리로 역원을 불러오기 좋은 수이다.

 

abs(x) # 절댓값

round(x) # 반올림

 

import math

math.pi # 파이

math.e #오일러 수

math.pow(x, y) # x의 y승

math.sqrt(x) # x의 제곱근

math.ceil(x) # 올림

math.floor(x) # 내림

math.fabs(x) # 절댓값

math.factorial(x) # 팩토리얼 x(x!)

math.gcd(a, b) # a와 b의 최대공약수

math.lcm (a, b) # a와 b의 최소공배수

 

import random

random.random() # 0에서 1까지의 값 반환

random.randrage(1, 7) # 범위 지정 랜덤반환

 

큐, 스택, 덱 자료구조

from collections import deque

d = deque() # 덱 생성 및 초기화

d.append(x) # 덱 뒤에 x 추가

d.appendleft(x) # 덱 앞에 x 추가

d.insert(i, x) # 덱의 i 인덱스에 x 추가

d.pop() # 덱 뒤의 값 제거(값을 리턴받을 수 있다 :  x = d.pop())

d.popleft() # 덱 앞의 값 제거

 

heap = [] # 힙 선언

heapq.heappush(heap, x) # 힙에 x 추가

heapq.heappop(heap) # 힙에서 값 제거

heapq.heapify(list) # 리스트를 힙으로 만들기 (O(n))

기본적으로 최소 힙이기 때문에, 최대 힙으로 사용하고 싶다면, 음수를 붙이거나, 튜플로 감싸는 방법 등이 있다

리스트와 튜플

list = [] #리스트 선언

list.append(x) # 리스트 뒤에 x 추가

list.sort() # 리스트 정렬(O(n log n))

list.reverse()  # 리스트 뒤집기

list.insert(a, b) # a 인덱스에 b 추가

list.remove(x) # 가장 앞에 있는 x 제거

list.pop() # 리스트 맨 뒤값 제거

list.count(x) # 리스트에 x의 개수 반환

list.extend(x) # 리스트에 리스트 x 붙이기

 

list[a:b] # 리스트의 a인덱스부터 b인덱스 전까지

list[:2] # 리스트의 처음부터 2인덱스 전까지 자르기

list[2:] #리스트의 2인덱스부터 끝까지 자르기

 

a + b# 리스트 a에 b 더하기

 list * 3 # 리스트 3번 반복

 

table = [[0] * m for _ in range(n)] m * n의 [0] 생성 및 초기화

문자열 처리

word = "" # 문자열 선언

 

word + 'a' # 문자열 뒤에 a 추가

word = 'a' + word # 문자열 앞에 추가

 

word[a:b] # 문자열의 a인덱스부터 b인덱스 전까지

word[:2] # 문자열의 처음부터 2인덱스 전까지 자르기

word[2:] #문자열의 2인덱스부터 끝까지 자르기

 

word.count('b') #문자 b의 개수 세기

word.find('b') # 문자 b의 처음으로 나오는 위치 찾기. index()와는 다르게 없으면 -1을 반환한다.

word.index('b') # 문자 b의 처음으로 나오는 위치 찾기 find()와는 다르게 없으면 오류 발생

 

word.upper() # 소문자를 대문자로 변환(전체)

word.lower() # 대문자를 소문자로 변환

 

word.lstrip() # 왼쪽 공백 제거

word.rstrip() # 오른쪽 공백 제거

word.strip() # 양쪽 공백 제거

 

word.replace(바뀔 문자열, 바꿀 문자열) # 문자열 치환

 

word.split() # 기본으로 공백 및 tab, enter 를 기준으로 분할. 파라미터에 구분할 기준을 넣을 수 있다.

 

word.isalnum() # 문자열 또는 숫자로만 이루어져있는지 불리언 값

word.isalpha() # 문자열로만 이루어져있는지

 

집합과 딕셔너리

s = set()

s1 & s2 # 교집합. s1.intersection(s2)와 같다.

s1 | s2 # 합집합. s1.union(s2)와 같다.

s1 - s2 # 차집합. s1.difference(s2)와 같다.

 

s.add(값) # 집합에 값 추가

s.update([1, 2, 4]) # 집합에 여러 값 추가

s.remove(1) # 특정 값 제거

 

dict = {} # 딕셔너리 생성

dict[apple] = 3 # key에 value 추가

 

if apple in dict: #값이 있는지 확인

 

 

 

728x90
반응형