티스토리 뷰

실수 값을 제대로 비교하지 못하는 상황 발생시

ex) 0.6+.0.3을 0.899999 로 나타냄

이럴 때는 round()함수를 이용하여 문제해결

수자료형의 연산

파이썬에서는 나누기 연산자(/)는 나눠진 결과를 실수형 반환

몫을 구할때는 a//b

리스트 자료형

데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형

배열 또는 테이블이라고 부름

리스트 인덱싱과 슬라이싱

리스트 뒤에서 부터 원소를 접근할 때 음수 사용

리스트에서 연속적인 위치를 가지는 원소를 가져올 때는 슬라이싱 사용(끝 인덱스는 실제 인덱스보다 1을 더 크게 설정)

리스트 컴프리헨션

a = [i for i in range(50)]

array = [i for i in range(20) if i % 2 == 1]

2차원 리스트를 초기화할 때 효과적으로 사용 가능

array = [[0] * m for _ in range(n)] #N*M 크기의 2차원 리스트

언더바는 언제 사용할까?

반복 수행하되 반복을 위한 변수의 값을 무시할 때 언더바(_)사용

리스트 관련 기타 메서드

함수명사용법시간 복잡도
append().append()O(1)
sort().sort()O(NlogN)
reverse().reverse()O(N)
insert()insert(삽입 위치 인덱스, 삽입할 값)O(N)
count().count(특정값)O(N)
remove().remove(특정값)O(N)

리스트에서 특정 값 가지는 원소 제거

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)

문자열 연산

문자열 변수에 덧셈을 이용하면 문자열이 더해져서 연결

문자열을 양의 정수와 곱하면, 그 값만큼 여러번 더해짐

슬라이싱은 가능 하지만 특정 인덱스의 문자값 변경은 불가능

튜플 자료형

튜플은 선언된 값을 변경 불가능하며 ()소괄호 사용

리스트에 비해 공간 효율적

튜플을 사용하면 좋은 경우

서로 다른 성질의 데이터를 묶어서 관리할 때

해싱의 키 값으로 사용할 때

메모리를 효율적으로 사용할 때

사전 자료형

키와 값의 쌍을 데이터로 가지는 자료형

해시 테이블을 사용해서 조회 시 O(1) 시간이 걸림

사전 자료형 관련 메서드

키 데이터만 뽑아 리스트로 사용할 때 keys()함수 사용

값 데이터만 뽑아 리스트로 사용할 때 values()함수 사용

집합 자료형

중복 허용하지 않고 순서가 없음

set함수 사용, {}중괄호 사용

집합 자료형의 연산

합집합: a | b

교집합: a&b

차집합: a-b

집합 자료형 관련 함수

add, update, remove

사전 자료형과 집합 자료형의 특징

사전 자료형과 집합 자료형은 리스트와 튜플과 달리 순서가 없어 인덱싱으로 값을 얻을 수 있어 조회 시 O(1)의 시간 복잡도를 가질 수 있음

자주 사용되는 표준 입력 방법

input() 함수는 한 줄의 문자열을 입력 받는 함수

map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용

ex)

list(map(int, input().split())) 
#공백을 기준으로 구분된 데이터 입력

빠르게 입력 받기

사용자로부터 입력을 빠르게 받아야 하는 경우(시간초과 방지)

sys.stdin.readline() 메서드 사용

import sys

data = sys.stdin.readline().rstrip()

자주사용되는 표준 출력 방법

print() 함수 사용

print()는 출력이후에 줄 바꿈 수행, 따라서 줄 바꿈을 원치 않을 경우 print(a, end=” “)

f-string 예제

문자열 앞에 접두사 ‘f’를 붙이고 중괄호 안에 변수명을 기입하여 문자열과 정수를 함께 넣기

answer=7
print(f"정답은 {answer}입니다.")

조건문

조건문은 프로그램의 흐름을 제어

들여쓰기

파이썬에서는 코드의 블록을 들여쓰기로 지정

조건문의 기본 형태

if ~elif ~else

논리 연산자

논리 값(True, False) 사이의 연산을 수행할 때 사용

X and Y / X or Y / not X

파이썬의 기타 연산자

다수의 데이터를 담는 자료형을 위해 in, not in 연산자 제공

ex) x in 리스트 / x not in 문자열

파이썬의 pass 키워드

아무것도 처리하고 싶지 않을 때 pass 키워드 사용

파이썬 조건문 내에서의 부등식

0<x<20같은 수학적 부등식을 그대로 사용가능

반복문

특정 소스코드를 반복 실행시 사용하는 문법

for문

‘in’ 뒤에 오는 데이터에 포함되어 있는 원소를 첫 번째 인덱스부터 하나씩 방문

연속적인 값을 순회할 때는 range()를 주로 사용

result = 0
#1부터 9까지 합
for i in range(1,10):
	result +=i

파이썬의 continue키워드

반복문에서 남은 코드의 실행을 건너뛰고, 다음 반복 실행 시 사용

파이썬의 break키워드

반복문을 즉시 탈출하고 싶을 때 break사용

함수와 람다 표현식

함수 정의하기

함수를 사용하면 소스코드의 길이 줄일 수 있음

def add(a.b)
	return a + b

global 키워드

global키워드로 변수 지정 시 함수 바깥에 선언된 변수를 바로 참조

동일한 이름의 지역 변수가 있다면 지역 변수 우선 참조

람다 표현식

특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있는 특징

list1 = [1,2,3,4,5]
list1 = [6,7,8,9,10]

result = map(lamda a,b : a+b, list1, list2)

실전에서 유용한 표준 라이브러리

내장함수: sum, min, max, eval, sorted

itertools: 순열 조합 라이브러리

heapq: 힙 자료구조 제공

bisect: 이진 탐색 기능

collecctions: 덱, 카운터 등의 자료구조를 포함

math: 필수적인 수학적 기능 제공(팩토리얼, 제곱근, gcd,pi)

순열과 조합

순열(nPr): 서로 다른 n개에서 서로 다른 r개를 일렬로 나열

from itertools  import permutations

data = ['A','B','C']

result = list(permutations(data,3))

조합(nCr): 서로 다른 n개에서 순서 상관없이 서로 다른 n개 뽑기

from itertools  import combinations

data = ['A','B','C']

result = list(combinations(data,2))

Counter

파이썬 collections 라이브러리의 Counter는 등장 횟수 세는 기능

리스트와 같은 반복 가능한 객체가 있을 때 내부의 원소가 몇 번 등장했는지를 나타냄

from collections import Counter

counter = Counter(['red','blue','green','blue','blue'])

print(counter['blue'])

최대 공약수와 최소 공배수

최대 공약수는 math라이브러리의 gcd함수 사용

import math

def lcm(a,b)
	return a*b // math.gcd(a,b)

'알고리즘 공부 > 이코테-python' 카테고리의 다른 글

6. 다이나믹 프로그래밍  (0) 2022.08.12
5. 이진탐색  (0) 2022.08.12
4. 정렬 알고리즘  (0) 2022.08.12
3. DFS & BFS  (0) 2022.08.12
2. 그리디 & 구현  (0) 2022.08.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함