리스트
N*M 크기의 2차원 리스트 초기화
- array = [[0] * m for _ in range(n)]
인덱싱을 통해 자료형의 값을 얻을 수 있음
함수명 | 설명 | 시간 복잡도 |
append() | 리스트에 원소 삽입 | O(1) |
sort() | 오름차순 정렬 | O(NlogN) |
sort(reverse = True) | 내림차순 정렬 | |
reverse() | 순서 뒤집기 | O(N) |
insert(삽입할 위치 인덱스, 값) | 특정 인덱스에 원소 삽입 | O(N) |
count(특정 값) | 특정 값을 가지는 데이터 개수 세기 | O(N) |
remove(특정 값) | 특정 값을 가지는 원소 제거(하나만) | O(N) |
# 리스트에서 특정 값을 가지는 원소 모두 제거
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
문자열
특정 인덱스의 값 변경 불가능!
튜플
- 리스트에 비해 상대적으로 공간 효율적( () 이용 )이지만 변경 불가능!
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때 사용
- 최단 경로 알고리즘에서 (비용, 노드 번호) 형태로 튜플 자료형을 자주 사용
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
- 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용 가능
- 리스트보다 메모리를 효율적으로 사용해야 할 때
- 인덱싱을 통해 자료형의 값을 얻을 수 있음
사전 자료형
- 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형
- 원하는 변경 불가능한 자료형을 키로 사용 가능
- 해시 테이블을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 가능
- if 'key' in data:
- data.keys(), data.values() → key 혹은 value만 리스트로 추출
- 인덱싱으로 값을 얻을 수 없음
집합
- 중복 허용 x, 순서 x
- 리스트 혹은 문자열을 이용하여 초기화 가능 → set()
- 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 가능
- 인덱싱으로 값을 얻을 수 없음
자주 사용되는 표준 입력 방법
- input() : 한 줄의 문자열을 입력 받는 함수
- map() : 리스트의 모든 원소에 각각 특정한 함수를 적용
- ex) list(map(int, input().split()))
- 사용자로부터 입력을 빠르게 받아야 하는 경우
- sys.stdin.readlin() 메서드를 이용(입력 후 엔터가 줄 바꿈 기호로 입력되므로 rstrip() 메서드 함께 사용
- f-string 이용
- print(f"정답은 {answer}입니다.") → 문자열과 정수를 함께 넣을 수 있음
파이썬의 기타 연산자
in 연산자와 not in 연산자 | 설명 |
x in 리스트 | 리스트 안에 x가 들어가 있을 때 참(True)이다. |
x not in 문자열 | 문자열 안에 x가 들어가 있지 않을 때 참(True)이다. |
반복문: for 문
for 변수 in 리스트:
실행할 소스코드
# i는 1부터 9까지 순회
for i in range(1, 10):
result += i
함수
- 파이썬에서 함수는 여러 개의 반환 값을 가질 수 있음
람다 표현식
# (lambda 매개변수: 함수의 반환값)(매개변수)
print((lambda a, b: a + b)(3, 7))
print(sorted(array, key=lambda x: x[1]))
result = map(lambda a, b: a + b, list1, list2)
유용한 표준 라이브러리
라이브러리 | 설명 |
itertools | 반복되는 형태의 데이터 처리, 순열과 조합 라이브러리 |
heapq | 힙(Heap) 자료구조를 제공, 우선순위 큐 기능 구현 |
bisect | 이진 탐색(Binary Search) 기능을 제공 |
collections | deque, Counter 등의 유용한 자료구조 |
math | 필수적인 수학적 기능, 팩토리얼, 제곱근, 최대공약수, 삼각함수 등 |
자주 사용되는 내장함수
- sum(), min(), max(), eval(), sorted(), sorted() with key
# 순열
from itertools import permutations
data = ['A','B','C']
result = list(permutations(data, 3))
# 조합
from itertools import combinations
data = ['A','B','C']
result = list(combinations(data, 2))
# Counter
from collections import Counter
print(counter['blue']) # 등장 횟수 출력
# 최대 공약수 최소 공배수
import math
print(math.gcd(21, 14))
print(lcm(21, 14))
참고 강의 :
(44) (이코테 2021 강의 몰아보기) 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기 - YouTube
'CS > 알고리즘' 카테고리의 다른 글
[이코테] 구현 - 기둥과 보 설치 (0) | 2023.02.28 |
---|---|
[이코테] 구현 - 뱀 (0) | 2023.02.28 |
[이코테] 구현 - 문자열 압축 (1) | 2023.02.27 |
[이코테] 그리디 - 무지의 먹방 라이브 (0) | 2023.02.27 |
우선순위 큐(Priority Queue), heapq (0) | 2023.02.21 |
리스트
N*M 크기의 2차원 리스트 초기화
- array = [[0] * m for _ in range(n)]
인덱싱을 통해 자료형의 값을 얻을 수 있음
함수명 | 설명 | 시간 복잡도 |
append() | 리스트에 원소 삽입 | O(1) |
sort() | 오름차순 정렬 | O(NlogN) |
sort(reverse = True) | 내림차순 정렬 | |
reverse() | 순서 뒤집기 | O(N) |
insert(삽입할 위치 인덱스, 값) | 특정 인덱스에 원소 삽입 | O(N) |
count(특정 값) | 특정 값을 가지는 데이터 개수 세기 | O(N) |
remove(특정 값) | 특정 값을 가지는 원소 제거(하나만) | O(N) |
# 리스트에서 특정 값을 가지는 원소 모두 제거
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
문자열
특정 인덱스의 값 변경 불가능!
튜플
- 리스트에 비해 상대적으로 공간 효율적( () 이용 )이지만 변경 불가능!
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때 사용
- 최단 경로 알고리즘에서 (비용, 노드 번호) 형태로 튜플 자료형을 자주 사용
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
- 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용 가능
- 리스트보다 메모리를 효율적으로 사용해야 할 때
- 인덱싱을 통해 자료형의 값을 얻을 수 있음
사전 자료형
- 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형
- 원하는 변경 불가능한 자료형을 키로 사용 가능
- 해시 테이블을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 가능
- if 'key' in data:
- data.keys(), data.values() → key 혹은 value만 리스트로 추출
- 인덱싱으로 값을 얻을 수 없음
집합
- 중복 허용 x, 순서 x
- 리스트 혹은 문자열을 이용하여 초기화 가능 → set()
- 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 가능
- 인덱싱으로 값을 얻을 수 없음
자주 사용되는 표준 입력 방법
- input() : 한 줄의 문자열을 입력 받는 함수
- map() : 리스트의 모든 원소에 각각 특정한 함수를 적용
- ex) list(map(int, input().split()))
- 사용자로부터 입력을 빠르게 받아야 하는 경우
- sys.stdin.readlin() 메서드를 이용(입력 후 엔터가 줄 바꿈 기호로 입력되므로 rstrip() 메서드 함께 사용
- f-string 이용
- print(f"정답은 {answer}입니다.") → 문자열과 정수를 함께 넣을 수 있음
파이썬의 기타 연산자
in 연산자와 not in 연산자 | 설명 |
x in 리스트 | 리스트 안에 x가 들어가 있을 때 참(True)이다. |
x not in 문자열 | 문자열 안에 x가 들어가 있지 않을 때 참(True)이다. |
반복문: for 문
for 변수 in 리스트:
실행할 소스코드
# i는 1부터 9까지 순회
for i in range(1, 10):
result += i
함수
- 파이썬에서 함수는 여러 개의 반환 값을 가질 수 있음
람다 표현식
# (lambda 매개변수: 함수의 반환값)(매개변수)
print((lambda a, b: a + b)(3, 7))
print(sorted(array, key=lambda x: x[1]))
result = map(lambda a, b: a + b, list1, list2)
유용한 표준 라이브러리
라이브러리 | 설명 |
itertools | 반복되는 형태의 데이터 처리, 순열과 조합 라이브러리 |
heapq | 힙(Heap) 자료구조를 제공, 우선순위 큐 기능 구현 |
bisect | 이진 탐색(Binary Search) 기능을 제공 |
collections | deque, Counter 등의 유용한 자료구조 |
math | 필수적인 수학적 기능, 팩토리얼, 제곱근, 최대공약수, 삼각함수 등 |
자주 사용되는 내장함수
- sum(), min(), max(), eval(), sorted(), sorted() with key
# 순열
from itertools import permutations
data = ['A','B','C']
result = list(permutations(data, 3))
# 조합
from itertools import combinations
data = ['A','B','C']
result = list(combinations(data, 2))
# Counter
from collections import Counter
print(counter['blue']) # 등장 횟수 출력
# 최대 공약수 최소 공배수
import math
print(math.gcd(21, 14))
print(lcm(21, 14))
참고 강의 :
(44) (이코테 2021 강의 몰아보기) 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기 - YouTube
'CS > 알고리즘' 카테고리의 다른 글
[이코테] 구현 - 기둥과 보 설치 (0) | 2023.02.28 |
---|---|
[이코테] 구현 - 뱀 (0) | 2023.02.28 |
[이코테] 구현 - 문자열 압축 (1) | 2023.02.27 |
[이코테] 그리디 - 무지의 먹방 라이브 (0) | 2023.02.27 |
우선순위 큐(Priority Queue), heapq (0) | 2023.02.21 |