코딩테스트를 위한 파이썬 문법 (2) (tuple, dictionary, set)

Jane·2020년 11월 26일
4
post-thumbnail

이 포스팅은 이것이 취업을 위한 코딩테스트다 APPENDIX A 코딩테스트를 위한 파이썬 문법 파트를 읽고 공부한 내용을 정리하는 용도로 작성되었습니다.
APPENDIX A에 수록된 문법 외에 개인적으로 공부한 내용을 추가해 두었으며, 예제는 직접 연습하며 작성하였기에 교재와 다를 수 있습니다.

Tuple 자료형

  • Tuple 자료형은 immutable data type으로 한 번 선언된 값은 변경할 수 없다.
>>> a = (1, 2, 3, 4)
>>> a[3]=10
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
  • 튜플을 이용하면 실수로 변경하면 안 되는 값을 변경하는 것을 방지할 수 있다.
  • 리스트에 비해 공간 효율적이며, 일반적으로 각 원소의 성질이 다를 때 사용한다.
    e.g. 다익스트라 최단 경로 알고리즘에서 (비용, 노드 번호)의 형태로 사용

Dictionary 자료형

  • Key와 Value의 쌍을 데이터로 가지는 자료형이다.
>>> data = dict() # data가 dictionary type임을 선언
>>> data['사탕'] = 'Candy'
>>> data['젤리'] = 'Jelly'
>>> data
{'사탕': 'Candy', '젤리': 'Jelly'}
  • 내부적으로 hash table을 이용한다.
    → 데이터의 검색 및 수정에 O(1)O(1)이 소요된다.
  • 키 또는 데이터 값 반환
>>> data.keys() # key 데이터만 담은 리스트 반환
dict_keys(['사탕', '젤리'])
>>> data.values() # value 데이터만 담은 리스트 반환
dict_values(['Candy', 'Jelly'])
  • dictionary 자료형 정리 (dictionary 자료형에 대하여 자세하게 정리해 두었으니 필요하신 분들은 확인하셔요🥰)

Set 자료형

  • 리스트나 튜플 자료형과 다르게 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
>>> data = {1,2,3,4,5}
>>> data[2]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'set' object is not subscriptable
  • 특정 데이터가 이미 등장한 적이 있는지를 체크할 때 효과적이다.
  • dictionary와 마찬가지로 hash table을 기반으로 구현되어 있다.

집합 자료형의 연산

>>> a = set([1,2,6,9,10])
>>> b = set([3,5,9,10,8])
>>> a | b # 합집합
{1, 2, 3, 5, 6, 8, 9, 10}
>>> a & b # 교집합
{9, 10}
>>> a - b # 차집합
{1, 2, 6}

집합 메서드

사용법설명시간복잡도
변수명.add(삽입할 원소)집합에 원소 삽입O(1)O(1)
변수명.update(삽입할 원소)여러개의 값 한 번에 추가
변수명.remove(특정 값)특정한 값 제거O(1)O(1)
  • add()
>>> data = {1,2,3,4}
>>> data.add(5)
>>> data
{1, 2, 3, 4, 5}
  • update()
>>> data.update([7,8,9])
>>> data
{1, 2, 3, 4, 5, 7, 8, 9}
  • remove()
>>> data.remove(4)
>>> data
{1, 2, 3, 5, 7, 8, 9}

파이썬 자료형 별 메서드의 시간 복잡도 정리

이 시리즈가 코딩테스트를 공부하시는데 조금이나마 도움이 되었다면 💚를 눌러주세요😉

0개의 댓글