Python for Coding test 2

TToII·2021년 8월 10일
0

algorithm_study

목록 보기
6/6

사전 자료형

키와 값의 쌍을 데이터로 가지는 자료형이다.
리스트나 튜플은 값을 순차적으로 저장한다는 특징이 있으나
사전 자료형은 키-값 쌍을 데이터로 가진다는 점에서, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다.
키로 한글 단어를 넣고, 값으로 영어 단어를 넣어 '사과'의 영어 단어를 알고 싶다면 '사과'라는 키 값을 가지는 데이터에 바로 접근하면 된다.

내부적으로 '해시 테이블'을 이용하므로 기본적으로 데이터의 검색 및 수정에 있어서 O(1)의 시간에 처리할 수 있다.

사전 자료형 관련 함수

키와 값을 별도로 뽑아내기 위한 함수
키 데이터만 뽑아서 리스트로 이용할 때는 keys(),
값 데이터만 뽑아서 리스트로 이용할 때는 values() 함수를 이용한다.

집합 자료형

집합은 기본적으로 리스트 혹은 문자열을 이용해서 만들 수 있는데,
다음과 같은 특성이 있다.

  • 중복을 허용하지 않는다.
  • 순서가 없다.

사전 자료형, 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다는 특징이 있으며 집합 자료형에서는 키가 존재하지 않고, 값 데이터만을 담게 된다.
특정 원소가 존재하는지를 검사하는 연산의 시간 복잡도는 사전 자료형과 마찬가지로 O(1)이다.

'특정한 데이터가 이미 등장한 적이 있는지 여부'를 체크할 때 매우 효과적이다.

입출력

여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다.
그래서 입력받을 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높다.

list(map(int, input().split()))을 이용하면 된다.

input()으로 입력받은 문자열을 split()을 이용해 공백으로 나눈 리스트로 바꾼 뒤, map을 이용하여 해당 리스트의 모든 원소에 int()를 적용
최종적으로 그 결과를 list()로 다시 바꿈으로써 입력받은 문자열을 띄어쓰기로 구분하여 각각 숫자 자료형으로 저장하게 되는 것이다.

입력을 위한 전형적인 소스코드

# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백으로 구분하여 입력 
data = list(map(int, input().split()))
-
data.sort(reverse = Ture)
print(data) 

공백을 기준으로 구분하여 적은 수의 데이터 입력

#n, m, k를 공백으로 구분하여 입력
n, m, k = map(int, input().split())
-
print(n, m, k)

입력이 많은 문제의 경우

파이썬 기본 input() 함수는 동작 속도가 느려, 시간 초과 오답 판정 가능성

import sys
sys.stdin.readline().rstrip()

sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip() 함수를 꼭 호출해야 한다.
readline()으로 입력하면 입력 후 엔터가 줄 바꿈 기호로 입력되는데,
이 공백 문자를 제거하려면 rstrip() 함수를 사용해야 한다.

profile
Hello World!

0개의 댓글