Python/이것이코딩테스트다with파이썬

5~6강 :: 문자열, 튜플 자료형, 사전, 집합 자료형

묘걍 2023. 11. 1. 19:44

👉🏻문자열 자료형

  • 문자열 변수를 초기화 할 때 큰따옴표(")나 작은 따옴표(')를 이용한다
  • 문자열 안에 큰 따옴표나 작은 따옴표가 포함되어야 하는 경우
    • 전체 문자열을 따옴표로 구성하는 경우: 내부적으로 작은 따옴표를 포함
    • 전체 문자열을 작은 따옴표로 구성하는 경우: 내부적으로 따옴표를 포함
    • 백슬래시(\)를 사용하면 큰 따옴표나 작은 따옴표를 원하는 만큼 포함시킬 수 있다.

- 다른 프로그래밍 언어에서는 큰 따옴표를 이용해서 문자열을 초기화하고, 작은 따옴표를 이용해서 하나의 문자를 초기화

- 파이썬에서는 둘 다 가능

🧩 문자열 연산

  • 문자열 변수에 덧셈(+)을 이용하면 문자열이 더해져서 연결(Concatenate) 된다
  • 문자열 변수를 특정한 양의 정수와 곱하는 경우, 문자열이 그 값만큼 여러번 더해진다
  • 문자열에 대해서도 마찬가지로 인덱싱과 슬라이싱을 이용할 수 있다
    • 다만 문자열은 특정 인덱스의 값을 변경할 수는 없다(Immutable)

- 덧셈일 경우 뒷쪽으로 죽 이어진다

 

- str객체는 원소 할당을 지원하지 않는다

 

 

👉🏻 튜플 자료형

  • 튜플 자료형은 리스트와 유사하지만 다음과 같은 문법적 차이가 있다.
    • 튜플은 한 번 선언된 값을 변경할 수 없다
    • 리스트는 대괄호([])를 이용하지만, 튜플은 소괄호(())를 이용한다
  • 튜플은 리스트에 비해 상대적으로 공간 효율적이다

- 리스트는 특정한 인덱스의 값 변경 가능

- 기능 제한적이지만 적은 양의 메모리를 사용한다

- 튜플은 원소 할당 연산을 지원하지 않는다

🧩 튜플을 사용하면 좋은 경우

  • 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
    • 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용한다
    • 비용= 실수값, 노드 번호 = 정수 를 하나로 묶어..
    • 학생 정보를 (학번, 성적) 묶어서
  • 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
    • 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있다
    • 집합 자료형 등에서 해싱의 키 값을 데이터의 묶음/나열을 사용해야할 때 
    • 리스트는 변경 가능해서 키 값으로 사용도리 수 없다
  • 리스트보다 메모리를 효율적으로 사용해야할 때

👉🏻 사전 자료형

  • 사전 자료형은 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형
    • 앞서 다루었던 리스트나 튜플이 값을 순차적으로 저장하는 것과는 대비된다
    • 리스트의 경우 값이 앞에서부터 차례대로 저장되어 있기 때문에 인덱싱을 사용할 수 있었다
  • 사전 자료형은 키와 값의 쌍을 데이터로 가지며, 원하는 '변경 불가능(Immutable) 자료형'을 키로 사용할 수 있다
    • 키 값을 이용해서 각 원소에 접근할 수 있다
  • 파이썬의 사전 자료형은 해시 테이블(Hash Table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다.
  • 키 값으로 접근했을 때 그것과 매칭되는 어떤 값을 얻고자 하는 자료구조에서 효과적
  • 사전을 정의한 뒤 사전명['키'] = 값 형태로 

- 특정 키가 있는지 검사하기 위해서 상수 시간이 소요됨

- 문자열 등의 키를 이용해 어떤 데이터를 저장하고 관리하려면 리스트보다 효율적으로 데이터 조회를 수행할 수 있다

 

🧩 사전 자료형 관련 메서드

  • 사전 자료형에서는 키와 값을 별도로 뽑아내기 위한 메서드를 지원한다
    •  데이터만 뽑아 리스트로 이용: keys() 함수 이용
    •  데이터만 뽑아 리스트로 이용: values() 함수 이용

- keys() 함수는 dictionary key라는 하나의 객체이기 때문에 이것을 진짜 list형태로 받으려면 list() 를 통해 형 변환을 해주어야 한다

 

👉🏻 집합 자료형

  • 집합은 다음과 같은 특징이 있다
    • 중복을 허용하지 않는다
    • 순서가 없다
    • 데이터 존재 여부만을 체크할 때 효과적으로 사용 가능
  • 집합은 리스트 혹은 문자열을 이용해서 초기화할 수 있다
    • 이때 set() 함수를 이용한다
  • 혹은 중괄호({}) 안에 각 원소를 콤마(,)를 기준으로 구분하여 삽입함으로써 초기화할 수 있다
  • 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다

- 리스트를 set() 함수로 감싸준다

- 중복을 제거해서 한번씩만 존재하는 것 처럼 나타난다

- {}안에 ,로 구분하여 초기화한다

🧩 집합 자료형의 연산

  • 기본적인 집합 연산으로는 합집합, 교집합, 차집합 연산 등이 있다
    • 합집합: 집합 A에 속하거나 B에 속하는 원소로 이루어진 집합(A∪B)
    • 교집합: 집합 A에도 속하고 B에도 속하는 원소로 이루어진 집합(A∩B)
    • 차집합: 집합 A의 원소 중에서 B에 속하지 않는 원소들로 이루어진 집합(A - B)

- 합집합: or (|)

- 교집합: and(&)

- 차집합: (-)

🧩 집합 자료형 관련 함수

- 새로운 원소를 추가할 때는 add()

- 새로운 원소 여러개 일 때는 update()

- 특정한 값을 갖는 원소 삭제시에는 remove()

 

- 특정한 원소가 존재하는지 조회, 특정 원소 삽입 및 삭제 시 상수 시간이 소요됨

 

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

  • 리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있다
  • 사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다
    • 사전의 키(key)혹은 집합의 원소(Element)를 이용해 O(1)의 시간 복잡도로 조회한다
    • 키나 원소의 값으로는 변경 불가능한 문자열이나 튜플 객체가 사용되어야 한다.

 

 

 

 

출처: https://youtu.be/p6df7qv6jFQ?si=9eHtqDhWAXT4XjRh

 https://youtu.be/Mkk8WOCAlqQ?si=aYHzZZkMwqbzxFnz