이것이 코딩 테스트다 with 파이썬을 읽고 작성하는 글입니다.
수 자료형에는 정수형, 실수형이 있다.
a = 1000
b = -7
c = 0
a = 157.93
b = -1837.2
c = 5. #5.0
d = -.7 #-0.7
실수형 데이터는 e나 E를 이용한 지수 표현 방식을 이용할 수 있다.
유효숫자e^지수 = 유효숫자 x 10^지수
주로 코딩테스트에서는 최댓값이 10억 미만일 경우 무한(INF)을 1e9
로 표현한다.
a = 1e9 #1000000000.0
b = 75.25e1 #752.5
c = 3954e-3 #3.954
a = 0.3 + 0.6 #0.8999999999999999
round(실수형 데이터, 반올림 위치 -1)
함수를 이용해 원하는 결과를 얻어낼 수 있다.a = 0.3 + 0.6
print(round(a, 4)) #0.9
print(123.456, 2) #123.46
+, -, *, /, %를 이용해 계산한다.
/ 연산자는 값을 실수형으로 처리한다. 몫을 얻고자 할 경우, //를 이용한다.
% 연산자는 나머지 값을 이용해 홀짝 여부 판단 등에 사용한다.
거듭제곱 연산은 **를 이용한다.
a = 7
b = 3
print(a / b) #2.3333333333333335
print(a % b) #1
print(a // b) #2
print(a ** b) # 343
a = [1, 2, 3, 4, 5]
b = list()
c = []
a = [0] * n
인덱싱 : 특정한 원소에 접근하는 것, 음의 정수는 원소를 거꾸로 탐색한다.
인덱싱을 이용해 특정 원소의 값을 바꿀 수 있다.
a = [1, 2, 3, 4, 5]
print(a[-1]) #5
a[2] = 10 #a = [1, 2, 10, 4, 5]
a = [1, 2, 3, 4, 5]
print(a[1:3]) #[2, 3]
리스트를 초기화하는 방법 중 하나
리스트의 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
0부터 9까지 수 중에서 짝수만 포함하는 리스트를 만드는 소스코드
a = [i for i in range(10) if i % 2 == 0]
print(a) #[0, 2, 4, 6, 8]
a = [i * i for i in range(1, 6)]
print(a) #[1, 4, 9, 16, 25]
리스트 컴프리헨션은 코딩 테스트에서 2차원 리스트 초기화에 매우 효과적으로 사용될 수 있다.
N x M 크기의 2차원 리스트 초기화 소스코드
특정 크기의 2차원 리스트 초기화는 반드시 리스트 컴프리헨션을 사용해야한다.
n = 3
m = 4
a = [[0] * m for _ in range(n)]
print(a) #[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
언더바( _ )의 역할
반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 사용한다.
단순히 "Hello World"를 5번 출력한느 것과 같은 상황에서는 언더바를 사용해 변수를 무시할 수 있다.
a = [1, 4, 3]
a.append(2) #[1, 4, 3, 2]
a.sort() #[1, 2, 3, 4]
a.sort(reverse = True) #[4, 3, 2, 1]
a.reverse() #[1, 2, 3, 4]
a.insert(2, 3) #[1, 2, 3, 3, 4]
a.remove(1) #[2, 3, 4, 4]
insert(), remove() 함수는 시간 복잡도가 O(N)이므로 시간 초과에 유의할 것.
특정한 값의 원소를 모두 제거하는 소스 코드
a = [1, 2, 3, 3, 4, 5, 6]
remove_set = {2, 3}
result = [i for i in a if i not in remove_set] #[1, 4, 5, 6]
a = 'Hello World' #Hello World
b = "Hello World" #Hello World
c = "'Hello' World" #'Hello' World
d = '"Hello" World' #"Hello" World
e = "\"Hello\" World" #"Hello" World
f = '\'Hello\' World' #'Hello' World
a = "Hello"
b = "World"
print(a + " " + b) #Hello World
a = "New"
print(a * 4) #NewNewNewNew
a = "abcde"
print(a[2:4]) #cd
a = (1, 2, 3, 4)
a = dict()
a['가나다'] = 'abc'
a['라마바'] = 'def'
a['사아자'] = 'ghi'
print(a) #{'가나다': 'abc', '라마바': 'def', '사아자': 'ghi'}
a = dict()
a['가나다'] = 'abc'
a['라마바'] = 'def'
a['사아자'] = 'ghi'
if '가나다' in a:
print("'가나다' 키-값이 존재합니다.")
# '가나다' 키-값이 존재합니다.
a = dict()
a['가나다'] = 'abc'
a['라마바'] = 'def'
a['사아자'] = 'ghi'
key_list = a.keys()
print(key_list) #dict_keys(['가나다', '라마바', '사아자'])
value_list = a.values()
print(value_list) #dict_values(['abc', 'def', 'ghi'])
for key in key_list:
print(a[key])
#abc
#def
#ghi
중복을 허용하지 않고 순서가 없다. 따라서 인덱싱을 통해 값을 얻을 수 없다.
set() 함수 또는 중괄호 안에 콤마를 기준으로 값을 구분해서 넣어 집합 자료형을 초기화 할 수 있다.
a = set([1, 1, 2, 4, 5]) #[1, 2, 4, 5]
b = {1, 2, 3, 3, 3, 4} #{1, 2, 3, 4}
a = set([1, 1, 2, 4, 5]) #[1, 2, 4, 5]
b = {1, 2, 3, 3, 3, 4} #{1, 2, 3, 4}
print(a | b) # {1, 2, 3, 4, 5}
print(a & b) # {1, 2, 4}
print(a - b) # {5}
a = set({1, 2, 3})
a.add(4) #{1, 2, 3, 4}
a.update([5, 6]) #{1, 2, 3, 4, 5, 6}
a.remove(3) #{1, 2, 4, 5, 6}