본문 바로가기
Study with Yedol/코딩테스트 준비

이코테 강의 몰아보기 | 1-1 파이썬 기초 문법

by 예돌맨 2024. 4. 22.
반응형

[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}

 

 

반응형