일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오준석의 생존코딩
- 플러터
- 생존코딩
- 오름캠프플러터
- 패스트 캠퍼스
- 모두의연구소
- 모두연구소
- 오준석의생존코딩
- 오름캠프
- 오존석의 생존코딩
- 모두의연구소 오준석생존코딩 오름캠프
- Tag #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- ㅇ
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 모두의 연구소 # 오준석의생존코딩# 오름캠프
- Today
- Total
꾸준히 하고싶은 개발자
자료구조 본문
자료구조(data structure) : 특징이 있는 정보를 메모리에 효율적으로 저장 및 반환하는 방법으로, 데이터를 관리하는 방식이다. 특히 대용량일수록 메모리에 빨리 저장하고 빠르게 검색하여, 메모리를 효율적으로 사용하고 실행 시간을 줄일 수 있게 해 준다.
스택(stack) : 자료구조의 핵심 개념 중 하나로, 간단히 표현하면 ‘Last In First OutLIFO’으로 정의할 수 있다. 즉, 마지막에 들어간 데이터가 가장 먼저 나오는 형태로, 데이터의 저장 공간을 구현하는 것이다.
아래 그림에서 4, 10과 같은 데이터를 저장하는 공간으로, 리스트와 비슷하지만 저장 순서가 바뀌는 형태를 스택 자료구조(stack data structure)라고 한다. 스택에서 데이터를 저장하는 것을 푸시(push), 데이터를 추출하는 것을 팝(pop)이라고 한다.
큐는 어떤 상황에서 사용할 수 있을까? 대표적인 예로, 앞서 언급한 사례 중 은행에서 대기 번호표를 뽑을 때 번호를 저장하는 방식이다. 먼저 온 사람이 앞의 번호표를 뽑고, 번호가 빠른 사람이 먼저 서비스를 받는 구조이다.
파이썬에서 큐를 구현하는 것은 기본적으로 스택의 구현과 같은데, pop( ) 함수를 사용할 때 인덱스가 0번째인 값을 쓴다는 의미로 pop(0)을 사용하면 된다. 즉, pop( ) 함수가 리스트의 마지막 값을 가져온다고 하면, pop(0)은 맨 처음 값을 가져온다는 뜻이다.
큐(queue) : 스택과 다르게 먼저 들어간 데이터가 먼저 나오는 ‘Fist in First Out(FIFO)’의 메모리 구조를 가지는 저장 체계이다.
튜플(tuple)은 리스트와 같은 개념이지만, 데이터를 변경할 수 없는 자료구조이다
>>>t=(1,2,3)
>>>print(t+t,t*2)
(1,2,3,1,2,3)(1,2,3,1,2,3)
>>>len(t)
3
설명
첫 번째 줄에서 튜플을 선언하는데, 튜플은 괄호를 이용하여 t=(1, 2, 3)과 같은 형태로 선언한다. 대괄호 [ ]를 이용하는 리스트와는 차이가 있다. 하지만 선언 외에 여러 가지 연산은 리스트와 같아, 리스트에서 사용하는 연산, 인덱싱, 슬라이싱이 모두 동일하게 적용된다. 위의 코드처럼 튜플 간의 덧셈 t + t이나 곱셈 t * 2, 그리고 len( )과 같은 리스트형 데이터에 사용하는 함수 모두 사용할 수 있다.
튜플의특징
튜플과 리스트의 유일하면서도 큰 차이점이 있다면, 튜플의 값은 마음대로 변경할 수 없다는 것이다. 만약 튜플의 값을 변경하고 싶다면 다음과 같이 오류가 발생한다.
튜플은 자신이 하나의 함수만 만들고, 다른 사람이 그 함수의 결과값을 사용해야 하는 경우가 발생할 수 있다. 이때 반환해 주는 타입을 튜플로 선언하여 받아서 사용하는 사람이 마음대로 데이터를 바꾸지 못하게 할 수 있다.
Key 바꾸지 않을때
학번이나 이름, 주민등록번호와 같이 변경되지 않아야 하는 정보 등이다. 프로그래머가 이러한 이해 없이 마음대로 값을 변경하려고 할 때, 튜플은 이를 방지하는 기능을 한다.
세트(set) : 값을 순서 없이 저장하면서 중복을 불허하는 자료형이다. 세트는 튜플과 다르게 삭제나 변경이 가능하며, 다양한 집합 연산을 제공한다.
세트의 특징
세트는 튜플과 다르게 삭제나 변경이 가능하다. 이 기능을 위해 다양한 함수를 다음과 같이 지원한다.
ex)
세트를 사용하기 위해 set( ) 함수를 사용하여 리스트나 튜플의 데이터를 넣으면, 해당 값이 세트 형태로 변환된다. 위 코드처럼 [1, 2, 3, 1, 2, 3]이라는 리스트형의 값을 세트로 변환하면, 중복을 제거한 후 {1, 2, 3}으로 변환되어 출력된다.
세트 함수
add( ) : 원소 하나를 추가
remove( ) 또는 discard( ) : 원소 하나를 제거
update( ) : 새로운 리스트를 그대로 추가
clear( ) : 모든 변수를 지우기
합집합은 두 집합의 중복값을 제거하고 합치는 연산이다. 위 코드에서는 s1.union(s2) 를 통해 s1과 s2의 합집합이 출력되었다. 합집합은 union과 같은 함수로도 표현할 수 있지만, | 기호로도 추출할 수 있다. 위 코드에서 s1 | s2의 결과가 s1.union(s2)와 동일한 것을 확인할 수 있다.
교집합은 두 집합 양쪽에 모두 포함된 값만 추출하는 연산이다. 위 코드에서 s1과 s2는 모두 3, 4, 5를 원소로 가지고 있다. 이 경우, s1.intersection(s2)나 s1 & s2로 교집합을 추출 할 수 있다.
차집합은 앞에 있는 집합 s1의 원소 중 s2에 포함된 원소를 제거하는 연산이다. 즉, s1에서 s1과 s2의 교집합 원소를 삭제하면 된다. 앞선 코드에서 s1은 [1, 2, 3, 4, 5]를 가지고 있으므로 [3, 4, 5]를 제거하면 [1, 2]만 남는다. 코드로 표현하면 s1.difference(s2) 또는 s1 - s2로 차집합을 추출할 수 있다.
딕셔너리(dictionary) : 전화번호부와 같이 키(key)와 값(value) 형태로 데이터를 저장하는 자료구조이다.
딕셔너리변수를 먼저 선언한 후, 해당 변수에 {키:값} 형태로 값을 입력한다. 그럼 해당 변수는 간단히 저장된다.
실습
'python' 카테고리의 다른 글
python 입력함수 및 형변환하기 (0) | 2022.12.26 |
---|---|
문자열 (0) | 2022.09.06 |
chapter05 (0) | 2022.09.06 |
chapter04 (0) | 2022.09.06 |