* 알고있는 내용은 필기 패스했음
1️⃣ 수 자료형
| 코딩 테스트에서 대부분 정수형을 다루는 문제가 주로 출제된다.
🐾 정수형 : 양의 정수, 음의 정수, 0
🐾 실수형 : 소수점 아래를 포함하는 수 자료형으로 소수부가 0이면 0을 생략해 작성할 수 있다.
a = 5.
print(a)
# 5.0
b = -.7
print(b)
# -0.7
🐾 지수표현방식 : e 나 E 를 이용한 지수표현 방식을 이용할 수 있다.
EX. 1e9 = 1,000,000,000
a = 1e9 # 10억의 지수표현방식
print(a) # 1000000000
a = 75.25e1
print(a) # 752.5
a = 3954e-3
print(a) # 3.954
🐾 부동 소수점 : 컴퓨터는 2진수 방식으로 수를 처리하기 때문에 실수 정보를 표현하는데 한계점을 가진다. 가령 0.2+0.7 을 파이썬 연산에 입력하면 다음과 같이 정확하게 0.9로 떨어지지 않게 출력한다. 컴퓨터는 실수를 정확하게 표현해내지 못하기 때문에 round 함수를 사용하여 소수점을 정확히 표현하는 방법이 있다.
🐾 연산자
• 나누기 연산자 / : 나눠진 결과를 실수형으로 처리함을 주의하기
• 나머지 연산자 % : 가령 특정 변수가 홀수인지 알아볼 때 해당 숫자가 2로 나눈 나머지가 1인지 확인할 때 많이 쓰이는 연산자이다.
• 몫 연산자 //
• 거듭제곱 연산자 **
2️⃣ 리스트 자료형
| 여러개의 데이터를 연속적으로 담아 처리하기 위해 사용되는 자료형
🐾 코딩 테스트에서 크기가 N 인 1차원 리스트 초기화 해야 하는 경우가 많다.
🐾 인덱싱 음수
🐾 슬라이싱 : 시작인덱스와 (끝 인덱스 - 1) 위치까지 출력
🐾 리스트 컴프리헨션 : 리스트를 초기화 하는 방법 중 하나로, 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화 시킬 수 있다.
| 리스트 컴프리헨션은 2차원 리스트를 초기화할 때 매우 효과적으로 사용될 수 있다.
🗨 주의 및 기억할 점 : 특정 크기의 2차원 리스트를 초기화 할 때는 반드시 리스트 컴프리헨션을 사용한다. 다음과 같이 초기화 한다면, 동일한 객체에 대한 레퍼런스로 인식되어 의도와는 다른 결과를 보이게 된다.
🗨 _ 언더바의 역할
• 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 자주 사용된다.
# Hello 3번 출력
for _ in range(3) :
print('Hello')
🐾 리스트 관련 메서드 : 특히 insert, append, remove 기억하기
메서드명 | 사용법 | 설명 | 시간복잡도 |
append | a.append() | 원소를 하나 삽입할 때 사용, 마지막 위치에 삽입됨 | O(1) |
sort | a.sort() a.sort(reverse = True) |
오름차순 정렬 내림차순 정렬 |
O(NlogN) |
reverse | a.reverse() | 원소 순서를 모두 뒤집음 | O(N) |
insert | a.insert( 삽입 위치 인덱스, 삽입값) | 특정 인덱스 위치에 원소를 삽입 | O(N) |
count | a.count(값) | 특정 값을 가지는 데이터 개수 세기 | O(N) |
remove | a.remove(값) | 특정 값을 가지는 원소 제거, 원소가 여러개면 하나만 제거 | O(N) |
🗨 insert VS append , 복잡도
• insert 는 중간에 원소를 삽입하고 리스트의 원소 위치를 조정해주어야 하기 때문에 복잡도가 O(N) 이다. 반면 append 는 마지막 인덱스 위치에 값을 추가하기만 하면 되서 복잡도가 O(1) 이다.
• remove 의 경우 역시 중간에 있는 원소를 삭제하고 리스트 원소의 위치를 조정해 주어야 하기 때문에 복잡도가 O(N) 이다.
🗨 특정 원소의 값을 모두 제거하고 싶을땐
• 파이썬은 그러한 함수를 기본적으로 제공해주지 않아 다음과 같은 방법으로 제거해야 함
3️⃣ 문자열 자료형
| 여러개의 데이터를 연속적으로 담아 처리하기 위해 사용되는 자료형
🐾 문자열 초기화 : 백 슬래쉬 (/) 를 사용하며면 큰 따옴표나 작은 따옴표를 원하는 만큼 문자열 안에 포함 시킬 수 있다.
🐾 문자열 연산 : 더하기 + 를 통해 문자열이 더해져서 연결될 수 있고, 문자열 변수를 양의 정수와 곱할 경우 문자열이 그만큼 여러번 더해진다. 문자열도 리스트처럼 인덱싱과 슬라이싱을 사용할 수 있다.
4️⃣ 튜플 자료형
| 한 번 선언된 값을 변경할 수 없으며 () 를 이용해 생성한다.
| 대입 연산자를 사용하여 값을 변경할 수 없다는 의미이다.
| 튜플 자료형은 그래프 알고리즘을 구현할 때 자주 사용된다. 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘의 내부에서 우선순위 큐를 사용하는데, 해당 알고리즘에서 큐에 한번 들어간 값은 변경되지 않아 큐에 들어가는 데이터를 튜플로 구성하여 작성한다.
| 변경하면 안 되는 값이 변경되고 있지 않은지 체크할 수 있다.
5️⃣ 사전 자료형
| key 와 value 를 쌍으로 가지는 데이터 자료형으로 변경 불가능한 데이터를 키로 사용할 수 있다.
| 파이썬의 사전 자료형은 '해시 테이블' 을 내부적으로 이용해서 데이터의 검색 및 수정에 있어 O(1) 시간 안에 처리할 수 있다. 리스트보다 훨씬 빠르게 동작한다.
| 사전 자료형은 코딩 테스트에서 자주 사용된다.
| 사전 자료형에 특정한 원소가 있는지 검색할 때 '원소 in 사전' 형태를 사용할 수 있으며 in 은 리스트나 튜플에 대해서도 사용 가능한 문법이다.
🐾 관련 메서드 : .keys() , .values()
6️⃣ 집합 자료형
| 중복을 허용하지 않는다, 순서가 없다
🗨 비교 : (리스트, 튜플) VS (사전, 집합)
• 리스트, 튜플 : 순서가 있기 때문에 인덱싱을 통해 자료의 값을 얻을 수 있다.
• 사전, 집합 : 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없고 집합 자료형의 경우에는 키도 없다. 원소가 존재하는지 여부를 검사하는 연산의 시간 복잡도는 O(1) 이다.
🐾 집합 생성
🐾 집합 자료형 연산
🐾 집합 자료형 함수
• add : 한 개의 값을 추가
• update : 여러 개의 값을 한꺼번에 추가 , 값은 리스트 형태로 추가한다.
• remove : 특정 값을 제거
• add, remove 모두 시간복잡도는 O(1)
'2️⃣ Study > ⚙ 알고리즘' 카테고리의 다른 글
[자료구조] 정렬 (1) | 2024.02.25 |
---|---|
[자료구조] DFS/BFS (0) | 2022.09.02 |
[자료구조] 구현 (1) | 2022.09.02 |
[자료구조] 그리디 (0) | 2022.09.02 |
[자료구조] 필수 파이썬 문법 - 조건문, 반복문, 함수, 입출력, 라이브러리 (0) | 2022.09.02 |
댓글