[1] 파이썬 기초 문법 이해하기
1. 복잡도(Complexity)
- 시간 복잡도 : 특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석
- 공간 복잡도 : 특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석
복잡도가 낮을수록 좋은 알고리즘이다!
1) 빅오 표기법
: 가장 빠르게 증가하는 항만을 고려하는 표기법(함수의 상항만 나타남)
2) 알고리즘 설계하기
- N의 범위가 500인 경우 : 시간 복잡도가 O(N^3) 알고리즘 설계
- N의 범위가 2,000인 경우 : 시간 복잡도가 O(N^2)알고리즘 설계
- N의 범위가 100,000인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘 설계
- N의 범위가 10,000,000인 경우 : 시간 복잡도가 O(N)인 알고리즘 설계
2. 자료형
: 파이썬의 자료형은 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등이 있다.
1) 정수형
: 정수를 다루는 자료형 (양의 정수, 음의 정수, 0)
2) 실수형
: 소수점 아래의 데이터를 포함하는 수 자료형
3) 지수 표현 방식
파이썬에서는 e나 E를 이용한 지수 표현 방식을 이용함.
e나 E 다음에 오는 수는 10의 지수부를 의미한다.
예를 들어 1e9라고 입력하게 되면, 10의 9제곱(1,000,000,000)이 된다.
4) 실수형
- round() 함수 : 반올림
예를 들어 123.456을 소수 셋째 자리에서 반올림하려면 round(123.456, 2)라고 작성한다. (결과 : 123.46)
5) 수 자료형의 연산
- 파이썬에서 나누기 연산자(/)는 나눠진 결과를 실수형으로 반환한다.
따라서 파이썬에서는 몫을 얻기 위해 몫 연산자(//)를 사용한다.
6) 리스트 자료형
: 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
- 배열(Array)의 기능 및 연결 리스트와 유사한 기능
6-1. 리스트 초기화
- 리스트는 대괄호[]안에 원소를 넣어 초기화하며, 쉼표(,)로 원소를 구분한다.
- 비어 있는 리스트를 선언하고자 할 때는 list() 혹은 간단히 []를 이용할 수 있다.
- 리스트의 원소에 접근할 때는 인덱스(Index)값을 과롷에 넣는다. (인덱스는 0부터 시작)
6-2. 리스트의 인덱싱과 슬라이싱
- 인덱스의 값을 입력하여 리스트의 특정한 원소에 접근하는 것을 인덱싱이라고 함.
- 리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때는 슬라이싱을 이용함.
(대괄호 안에 콜론(:)을 넣어 시작 인덱스와 끝 인덱스를 설정함)
6-3. 리스트 컴프리헨션
: 리스트를 초기화하는 방법 중 하나로, 대괄호 안에 조건문과 반복문을 적용하여 리스트를 초기화 할 수 있음.
#1 0부터 9까지의 수를 포함하는 리스트
array = [i for i in range(10) ]
print(array)
#1 실행결과
[0,1,2,3,4,5,6,7,8,9]
#2 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)
#2 실행결과
[1,3,5,7,9,11,13,15,17,19]
#3 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1,10)]
print(array)
#3 실행결과
[1,4,9,16,25,36,49,64,81]
- 리스트 컴프리헨션은 2차원 리스트를 초기화할 때 효과적으로 사용됨
# 2차원 리스트 초기화
array = [[0] * m for _ in range(n)]
6-4. 언더바의 사용
: 파이썬에서 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_)를 사용함.
#1 1부터 9까지의 자연수 더하기
summary = 0
for i in range(1, 10):
summary += i
print(summary)
#2 "Hello World" 5번 출력하기
for _ in range(5):
print("Hello World")
6-5. 리스트 관련 기타 메서드
#1 기본 리스트
a = [1,4,3]
print(a)
#1 출력 결과
[1,4,3]
#2 리스트에 원소 삽입
a.append(2)
print(a)
#2 리스트에 원소 삽입 출력 결과
[1,4,3,2]
#3 내림차순 정렬
a.sort(reverse = True)
print(a)
#3 내림차순 정렬 출력 결과
[4,3,2,1]
#4 오름차순 정렬
a.sort()
print(a)
#4 오름차순 정렬 출력 결과
[1,2,3,4]
#5 특정 인덱스에 데이터 추가
a.insert(2,3)
print(a)
#5 특정 인덱스에 데이터 추가 출력 결과
[1,2,3,3,4]
#6 특정 값 데이터 삭제
a.remove(1)
print(a)
#6 특정 값 데이터 삭제 출력 결과
[2,3,3,4]
6-6. 리스트에서 특정 값을 가지는 원소를 모두 제거하기
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]
7. 튜플 자료형
- 튜플은 한 번 선언된 값을 변현할 수 없다.
- 튜플은 소괄호()를 이용함.
1) 튜플을 사용하면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
ex. 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용
- 리스트보다 메모리를 효율적응로 사용해야 할 때
8. 사전 자료형
: 키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형
1) 사전 자료형 관련 메서드
- 키 데이터만 뽑아서 리스트로 이용할 때는 keys() 함수를 이용
- 값 데이터만 뽑아서 리스트로 이용할 때는 values() 함수를 이용
9. 집합 자료형
: 중복X, 순서X
- 리스트 혹은 문자열을 이용하여 초기화함(set() 함수 이용 혹은 중괄호{}안에 원소 삽입하여 초기화)
# 집합 자료형 초기화 방법1
data = set([1,1,2,3,4,4,5])
print(data)
#출력 결과
{1,2,3,4,5}
# 집합 자료형 초기화 방법 2
data = {1,1,2,3,4,4,5}
print(data)
# 출력 결과
{1,2,3,4,5}
'Study with Yedol > 코딩테스트 준비' 카테고리의 다른 글
이코테 강의 몰아보기 | 4. 정렬 알고리즘 (0) | 2024.04.25 |
---|---|
이코테 강의 몰아보기 | 3. DFS & BFS (2) | 2024.04.25 |
이코테 강의 몰아보기 | 2-2. 그리디 & 구현 (1) | 2024.04.23 |
이코테 강의 몰아보기 | 2-1. 그리디 & 구현 (0) | 2024.04.23 |
이코테 강의 몰아보기 | 1-2 파이썬 기초 문법 (0) | 2024.04.22 |