https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2
이 포스트는 위의 영상을 보고 제가 필요하다고 생각된 부분을 정리한 포스팅 입니다.
- 실수형 데이터의 경우, 컴퓨터 특성상 4바이트나 8바이트로 실수를 표현하기 때문에 근사치를 표현하여 정확하게 떨어지지 않는 경우가 많다.
- 따라서 round() 함수를 사용해서 소수점 반올림을 하는 방법이 권장된다.
a = 123.456
print(round(a, 2))
# 123.46
리스트를 초기화 할 때 리스트 컴프리헨션을 활용해서 초기화 하면 편함
# 1차원 리스트
array = [0]*3
# [0,0,0]
# 2차원 리스트 N * M
N, M = 3,5
array = [[0]*M for _ in range(N)]
# [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
# 잘못된 예시
array= [[0]*M]*N
# 위의 경우와 값은 동일하나 내부적으로 M*[0]의 리스트(임의의 주소값을 갖는 객체로 인식함)
# 를 N의 길이만큼 참조하여 복사된 주소값을 가지게 됨
- 자주 사용하는 리스트 관련 함수 시간복잡도.
remove 함수는 특정한 값을 갖는 원소를 하나만 제거 한다. 모든 원소를 제거 하고 싶다면 아래와 같은 방법을 사용하자.
a =[1,2,3,4,5,5,5]
remove_set = {3,5}
result = [i for i in a if i not in remove_set]
print(result)
# [1,2,4]
- 문자열은 특정한 인덱스의 값을 변경할 수 없다.(immutable)
- 튜플은 ( ) 를 사용하고 값을 변경할 수 없다.(immutable)
- 튜플은 리스트에 비해 공간 효율적임.
튜플을 사용하면 좋은 예
1. 서로 다른 성질의 데이터를 묶을 때
2. 데이터의 나열을 해싱의 키 값으로 사용할 때
3. 리스트보다 메모리를 효율적으로 사용해야 할 때
- dict는 O(1) 시간 복잡도를 가짐.
key 만 원할 때 keys
value만 원할 때 values
- 집합 자료형
- 모든 작업에서 O(1)
- set( ) 함수 이용하거나 { } 이용
- 중복 X 순서 X
집합 자료형 연산
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
# 합집합
print(a | b)
# {1,2,3,4,5,6,7}
# 교집합
print(a & b)
# {3,4,5}
# 차집합
print(a - b)
# {1,2}
집합 자료형 함수
data = set([1,2,3])
print(data)
# {1,2,3}
# 원소 추가
data.add(4)
print(data)
{1,2,3,4}
# 원소 여러 개 추가
data.update([5,6])
print(data)
{1,2,3,4,5,6}
# 특정 값 갖는 원소 삭제
data.remove(6)
print(data)
{1,2,3,4,5}
# 없는 값 remove 할 시 에러 발생
data.remove(7)
- 입력 받기
a = input() # 문자열 형태로 입력 됨
b = int(input()) # int 형태로 변환
c = list(map(int, input().split())) # 공백을 기준으로
a, b ,c = map(int, input().split()) # 입력이 3개로 주어진 경우
# 빠른 입력 받기
import sys
data = sys.stdin.readline().rstrip()
print(data)
유용한 표준 라이브러리
- 자주 사용 되는 내장함수
result = sum([1,2,3,4,5])
print(result)
# 15
min_result = min(7,3,5,2)
min_result = max(7,3,5,2)
print(min_result , max_result)
# 2 7
result = eval("(3+5)*7")
print(reuslt)
# 56
# sorted()
result = sorted([9,1,8,5,4])
reverse_result = sorted([9,1,8,5,4],reverse=True)
print(result)
# [1,4,5,8,9]
print(reverse_result)
# [9,8,5,4,1]
# sorted() with key
array = [('홍길동', 35), ('이순신', 75), ('아무개', 50)]
result = sorted(array, key=lambda x: x[1], reverse=True)
print(result)
# [('이순신', 75), ('아무개', 50), ('홍길동', 35)]
천만 , 1억 단위를 넘어갔을 경우 시간 초과 판정 날 경우가 많다.
#[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
#[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
Counter 객체를 활용하여 내부 원소 등장 횟수 구하기
from collections import Counter
counter = Counter(['red','blue','red','green','blue','blue'])
print(counter['blue'])
print(counter['green'])
print(dict(counter))
'''
3
1
{'red': 2, 'blue': 3, 'green': 1}
'''
import math
# 최소 공배수(LCM)를 구하는 함수
def lcm(a,b):
return a * b // math.gcd(a, b)
a = 21
b = 14
print(math.gcd(a,b))
print(lcm(a,b))
'''
7
42
'''
재귀 사용시
import sys
sys.setrecursionlimit(10 ** 6)
'Programming > Python' 카테고리의 다른 글
#5 Python 코딩테스트 이진 탐색 (0) | 2021.10.20 |
---|---|
#4 Python 코딩테스트 정렬 알고리즘 (0) | 2021.10.20 |
#2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS (0) | 2021.10.20 |
Python 입력 값 다양하게 받기 (input, map, split) (0) | 2021.10.19 |
Python 순열, 조합 (permutations, combinations, product) (0) | 2021.09.27 |
댓글