파이썬 알고리즘 공부 - (0)
코딩테스트 대비 알고리즘 공부
(파이썬)
https://youtu.be/m-9pAwq1o3w?feature=shared
📍자료형
- 정수형 ( 4, -1, ...)
- 실수형 ( 153.23, 5. -.7 , -12.12 )
*지수 표현 ( 1e9 => 1,000,000,000)(75.3e)
*반올림 함수 round() (123.123, 2)
* 나누기 연산 시 실수형으로 반환
- 리스트 자료형 (배열, 테이블) list() or [] ( a = [0] * 5 => [0,0,0,0,0] )
* 인덱스는 0부터 시작
* 인덱싱, 슬라이싱
* 리스트 컴프리헨션 : 리스트 초기화 방법 a = [ i for i in range(20) if i % 2 == 1] 조건문과 반복문을 삽입할 수 있다.
#000
#000
n = 2
m = 3
array = [[0]*m for _ in range(n)]
- 문자열 자료형
*문자열 안에 " 포함해야 하는 경우 -> 백슬래시 사용
* 문자열 덧셈(+),곱셈(*), 인덱싱, 슬라이싱 가능
- 튜플 자료형
* 리스트와 유사, ()로 표현
* 한 번 선언된 값을 변경할 수 없다.
- 사전 자료형 dict()
* 키와 벨류의 쌍으로 가지고
* 변경 불가능한 자료형을 키로 사용
* .keys(), .values() 함수 존재
- 집합 자료형
* 중복 허용하지 않고 순서가 없음
* 존재 여부 set() or {} 중복 없애줌
* 합집합(|), 차집합(-), 교집합(&)
* .add(), .update(), .remove()
📍기본 입출력
입력
input() : int(input()), a = input()
map() : a = list(map(int, input().split()))
문자열 입력받기
import sys
data = sys.stdin.readline().rstrip()
출력
print() -> 출력 후 줄바꿈 수행
print(6, end=" ") 줄바꿈 X
print("ddd" + star(answer) + "ㅇㅇ")
print(f"dd{answer}oo") #f-string
📍조건문과 반복문
조건문
if x >= 10: > 조건이 참이면
print("dd") > 이 코드 실행
if ~ elif ~ else
논리연산자 : X and Y , X or Y , not X
기타연산자 : x in 리스트, x not in 문자열 -> 리스트, 튜플, 문자열, 딕셔너리 모두 사용가능
*pass : 무시
한 줄 작성 : "정답" if score >80 else "실패"
반복문
while문 -> 무한루프 조심 (탈출할 수 있는지 꼭 확인하기)
while x> 5:
print(x)
for문
for x in array:
print(x)
for i in range(1, 10):
result += i
*continue : 건너뛰기
*break : 탈출
📍함수와 람다 표현식
내장 함수 , 사용자 정의 함수
*함수 정의하기
def 함수명(매개변수):
실행할 소스코드
return 반환 값
*global 키워드 : 전역변수를 지역변수처럼 적용
람다 표현식 : 특정 기능을 수행하는 함수를 한 줄에 작성할 수 있음
print((lambda a, b: a+b)(3,7))
print(sorted(array, key=lambda x: x[1])) -> 정렬할 때 두번째원소를 기준으로 정렬하고자 할 때 [("ㅁㅁ",10),()]
result = map(lambda a, b: a+b, list1, list2)
print(list(result)) -> 여러 개의 리스트에 적용
📍실전에서 유용한 표준 라이브러리
<내장함수>
sum() : 원소들의 합
min(), max()
eval() : 계산식 결과 도출
sorted() : 정렬,
*reverse=True로 내림차순, key = 기준
순열과 조합 : 순열은 순서 고려, 조합은 ㄴㄴ
순열 nPr : from itertools import permutations
조합 nCr : from itertools import combinations
중복 순열, 중복 조합
중복 순열 : from itertools import product
중복 조합 : from itertools import combinatios_with_replacement
data = ['A', 'B', 'C']
result = list(~~(data, repeat=2))
Counter
from collections import Counter
내부의 원소가 몇 번씩 등장했는지 사전식으로 나타냄
최대공약수와 최소공배수
import math
최대공약수 : math.gce(21, 14)
최소공배수 : lcm(21,14)
def lcm(a, b):
return a*b // math.gcd(a,b)