아이디어지니
아이디어지니 : 개발이야기
아이디어지니
전체 방문자
오늘
어제
  • 분류 전체보기 (26)
    • 안드로이드 (11)
    • 50자다이어리 (2)
    • 코딩테스트 (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 바인딩 서비스
  • 내일배움카드
  • cmp_to_key
  • 1181
  • 안드로이드
  • 패스트캠퍼스
  • greenDAO
  • deprecated
  • K디지털기초역량훈련
  • TextUtils
  • 안드로이드 애니메이션
  • 파이썬
  • functools
  • 앱재시작
  • setrecursionlimit
  • jcenter
  • 코딩테스트
  • 단어정렬
  • 백준
  • andorid
  • Interpolator
  • 안드로이드 서비스
  • null
  • null check
  • 나도 할 수 있는 Java&Spring 웹 개발 종합반
  • onStartCommand
  • 에라토스테네스의 체
  • App Restart
  • 커스텀정렬
  • TextView

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이디어지니
코딩테스트

이코테 5강 리뷰 (사전, 집합 자료형)

코딩테스트

이코테 5강 리뷰 (사전, 집합 자료형)

2022. 5. 13. 16:14

사전 자료형

- 키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형

- 변경 불가능한(Immutble) 자료형을 키로 사용할 수 있음

- 해시 테이블(Hash Table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있는 장점이 있음

 

초기화 : dict()이나 {}으로 초기화

data = dict()

data['사과'] = 'apple'
data['바나나'] = 'banana'
data['코코넛'] = 'coconut'

# 또는 아래 방법으로도 초기화 가능

data = { 
	'사과': 'apple',
	'바나나': 'banana',
	'코코넛': 'coconut'
}

print(data) # {'사과': 'apple', '바나나': 'banana', '코코넛': 'coconut'} 출력

키 존재 여부 검사

- 특정 키가 존재하는 지 검사하기위해 'O(1)'(상수시간)이 소요. 때문에 문자열과 같은 키를 이용해서 데이터를 저장하고 관리하고자 하는 상황에서는 리스트보다 효율적이며 데이터 조회를 빠르게 수행할 수 있음.

# 사과라는 키가 data라는 사전에 포함되어 있는지 여부(키 존재 여부 검사)
if '사과' in data:
	print("사과를 키로 가지는 데이터가 존재합니다")  # 정상 출력

키, 값 추출

- keys(), values() 메서드를 이용하여 키와 값 데이터만 뽑아서 리스트로 이용할 수 있음.

- 파이썬 3 이후에는 메모리 낭비를 줄이기 위해 keys() 메서드가리스트가 아닌 객체를 반환한다. list(data.keys())를 이용하면 리스트로 반환받을 수 있다. 참고 : https://wikidocs.net/16

# 키 데이터만 담은 리스트
key_list = data.keys()

# 값 데이터만 담은 리스트
value_list = data.values()

# 각 키에 따른 값을 하나씩 출력
for key in key_list:
	print(data[key])

- key, Value 쌍 추출 : items() 메서드를 이용하면 key와 Value의 쌍을 튜플로 묶은 값을 돌려준다

dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

- Key로 value 얻기 

# 방법 1
data['파인애플'] # 찾는 key값이 없어 KeyError 발생

# 방법 2
print(data.get('파인애플')) # 찾는 key 값이 없어도 KeyError 발생하지 않고 None 반환

# 기본값을 부여해서 None 대신 기본값을 반환하도록 할 수 있다.
print(data.get('파인애플', 'pineapple')) # 찾는 파인애플 key가 없지만 디폴트값 pineapple이 출력됨

- clear()로 key : value 쌍 모두를 지울 수 있다

 

- 특정 Key 삭제 : del 사전명[key이름] 또는 사전명.pop(key명, None)

 

 

집합자료형

집합자료형의 특징

- 수학적 집합의 특징과 같음 

  1. 중복을 허용하지 않는다.

  2. 순서가 없다. (리스트나 튜플은 순서가 있음)

이러한 특징으로 인하여 데이터가 존재하는지, 존재하지 않는지 여부를 체크할 때 사용하면 좋음

- 데이터의 조회 및 수정에 있어 O(1)(상수시간)의 시간에 처리할 수 있음

 

집합의 초기화

- 리스트 혹은 문자열을 이용해 초기화 : set() 함수 이용

- 중괄호({}) 안에 각 원소를 콤마(,)를 기준으로 구분하여 삽입하여 초기화

# 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5]) # set 안에 리스트([])로 초기화

# 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5}

print(data)  # {1, 2, 3, 4, 5} 중복된 원소는 제거된 값만 포함 된다.

# 문자열 초기화
data = set("hello")
print(data) # {'e', 'h', 'l', 'o', 'l'} 

# 비어있는 집합 자료형은 set()으로 초기화가능

 

집합 자료형의 연산

- 합집합 : A에 속하거나 B에 속하는 원소(A U B) A or B

- 교집합 : A에도 속하고 B에도 속하는 원소(A n B) A and B

- 차집합 : 집합 A의 원소 중에서 B에 속하지 않는 원소들로 이루어진 집합(A - B) 

a = set([1,2,3,4,5])
b = set([3,4,5,6,7])

# 합집합
print(a | b) 
print(a.union(b))

# 교집합
print(a & b) 
print(a.intersection(b))

 # 차집합
print(a - b)
print(a.difference(b))

집합 자료형 관련 메서드

- add() : 값 1개 추가

- update() : 값 여러개 추가

- remove() : 특정 값 제거

data = set([1,2,3])
data.add(4)
print(data) # 출력 {1, 2, 3, 4}

data = set([1,2,3])
data.update([4,5,6])
print(data) # 출력 {1,2,3,4,5,6}

data = set([1,2,3])
data.remove(2)
print(data) # 출력 {1,3}

 

사전 자료형과 집합 자료형의 특징

- 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.

- key 혹은 집합의 원소(Element)를 이용해 O(1)(상수시간)의 시간 복잡도로 조회한다.

 

본 글은 나동빈 - 이코테 2021 강의 몰아보기를 토대로 작성한 정리입니다.

좋은 강의를 올려주신 나동빈님께 감사드립니다.

'코딩테스트' 카테고리의 다른 글

[파이썬] 문자열 포맷팅 Formatting  (0) 2022.07.12
이코테 6강 리뷰 (기본 입출력)  (0) 2022.05.17
이코테 4강 리뷰 (문자열, 튜플 자료형)  (0) 2022.05.13
이코테 3강 리뷰 (리스트 자료형)  (0) 2022.05.12
    '코딩테스트' 카테고리의 다른 글
    • [파이썬] 문자열 포맷팅 Formatting
    • 이코테 6강 리뷰 (기본 입출력)
    • 이코테 4강 리뷰 (문자열, 튜플 자료형)
    • 이코테 3강 리뷰 (리스트 자료형)
    아이디어지니
    아이디어지니
    할까 말까 할 때는 하라

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.