- 햇갈리는 자료형 초기화 방법 정리
- 집합(set) - 합칩합, 교집합, 차집합
- 중복을 허용하지 않음
- 순서가 없음
- 데이터 조회 및 수정에 있어서 상수시간에 처리가능
# 집합 자료형 초기화 방법 1
data_1=set([1,1,1,2,3,4,5,6])
print(data_1)
print(type(data_1))
print()
# 집합 자료형 초기화 방법 2
data_2={1,2,3,3,4,4,5}
print(data_2)
print(type(data_2))
a=set([1,2,3,4,5])
b=set([3,4,5,6,7])
# 합집합
print(a|b)
# 교집합
print(a&b)
# 차집합
print(a-b)
print()
data_3=set([1,2,3])
#새로운 원소 추가
data_3.add(4)
print(data_3)
# 새로운 원소 여러개 추가
data_3.update([5,6])
print(data_3)
# 특정한 값을 갖는 원소 삭제
data_3.remove(3)
print(data_3)
- 딕셔너리(dictionary) - 다른 언어에서는 Hash Table이라고 부름
- 데이터의 조회 및 수정에 있어서 상수 시간 O(N) 에 처리가능
# 딕셔너리 초기화 방법 1.
data=dict()
# 키, 값
data['사과']='Apple'
data['바나나']='banana'
data['코코넛']='coconut'
print(data)
print()
# 딕셔너리 초기화 방법 2
data_2={
'홍길동' : 50,
'이순신' : 49
}
print(list(data_2.values())) # 리스트로 형변환
print(data_2.values())
print()
# 키 값이 딕셔너리에 존재하는지 확인
if '사과' in data:
print("true")
print()
# keys, values 추출.
print(data.keys())
print(data.values())
print()
# 키 값에 맞는 value 출력
for i in data.keys():
print('key 값 : ',i)
print('value 값 ',data[i])
- 리스트(list)
my_list = [1, 2, 3]
my_list.append(4) # 4를 리스트 끝에 추가
print(my_list) # 출력: [1, 2, 3, 4]
my_list = [1, 2, 3]
my_list.append([4, 5]) # 리스트 자체를 추가
print(my_list) # 출력: [1, 2, 3, [4, 5]]
my_list = [1, 2, 3]
my_list.extend([4, 5, 6]) # [4, 5, 6]의 모든 요소를 추가
print(my_list) # 출력: [1, 2, 3, 4, 5, 6]
list1 = [1, 2, 3]
list2 = [4, 5]
result = list1 + list2 # 새로운 리스트 생성
print(result) # 출력: [1, 2, 3, 4, 5]
- 자주 사용되는 표준 입력 방법
# 기본 데이터 입력
n=int(input())
# 각 데이터를 공백을 기주으로 구분하여 입력,
# map() : iterable의 각 요소에 대해 function 을 적용한 결과를 새롭게 반환함, map(function, iterable)
# map 안하면, 문자열(' ')로 나옴
data= list(map(int,input().split()))
print(data)
# 공백을 기준으로 입력의 개수가 정해져 있거나, 많지 않을 때
a, b, c = map(int,input().split())
print(a, b, c)
- 람다 표현식
- 람다 표현식을 이용하면 함수를 간단하게 작성 가능
- 함수자체를 입력으로 받을 때 유용하게 사용됨
- lambda 인자 : 표현식
print((lambda a,b : a+b)(3,7)) # 출력값 10
- 최대공약수(Greatest common divisor), 최소공배수(Least common multiple)
import math
def lcm(a,b):
return a*b //math.gcd(a,b)
a=21
b=14
print(math.gcd(21,14)) # GCD계산
print(lcm(21,14)) #lcm계산
- 소수의 판별 : 기본적인 알고리즘
# 소수 판별 함수(2이상의 자연수에 대하여)
def is_prime_number(x):
# 2부터 (x - 1)까지의 모든 수를 확인하며
for i in range(2, x):
# x가 해당 수로 나누어떨어진다면
if x % i == 0:
return False # 소수가 아님
return True # 소수임
print(is_prime_number(4)) # 4는 소수가 아님
print(is_prime_number(7)) # 7은 소수임
- 소수의 판별 : 개선된 알고리즘 → 속도가 기존 방식보다 빠름
'''
틀림주의
- int(math.sqrt(x))+1 에서 int 해야함.
- range는 2부터 시작.
'''
import math
# 소수 판별 함수
def is_prime_number(x):
# 2부터 x의 제곱근까지의 모든 수를 확인하며
# range함수가 마지막 숫자를 포함하지 않기에 +1함,
# 제곱근만 확인해도 쌍을 이루기 때문에 가능한 이유임.
for i in range(2, int(math.sqrt(x)) + 1):
# x가 해당 수로 나누어떨어진다면
if x % i == 0:
return False # 소수가 아님
return True # 소수임
print(is_prime_number(4)) # 4는 소수가 아님
print(is_prime_number(7)) # 7은 소수임
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
print(is_prime(4)) # 4는 소수가 아님
print(is_prime(7)) # 7은 소수임
'프로그래밍 코딩테스트 > 파이썬_코테' 카테고리의 다른 글
파이썬) 행맨게임 구현 (0) | 2022.02.04 |
---|---|
파이썬) 백준_1110번 (0) | 2022.01.28 |
파이썬) 프로그래머스_구명보트 (0) | 2022.01.25 |
파이썬) 백준_20205번 (0) | 2022.01.25 |
파이썬) 백준_10828번 (0) | 2022.01.25 |