수 자료형은 코딩 테스트에서 가장 기본적인 자료형임
실제로 코딩테스트에서도 대부분의 경우 정수형을 다루는 문제가 많이 출제
정수형 Integer
정수형은 정수를 다루는 자료형이며 정수형에는 양의 정수, 음의 정수 , 0이 있다.
실수형 Real Number
/ => 나누기
% => 나머지
// => 몫332
#정수형
a = 1000 # 양의 정수
print(a)
a = -7 #d 음의 정수
print(a)
a = 0
print(a)
#실수형
a = 157.93
a= -1837.2
#소수부가 0일때 0을 생략
a = 5.
print(a)
#정수부가 0일때는 0을 생략
a = -.7
print(a)
a = 1e9
print(a)
a = 75.25e1
print(a)
a = 3954e-3
print(a)
tip) 코딩 테스트에서 주로 크기가 N인 1차원 리스트를 초기화해야 하는데 다음 방식으로 초기화하면 편리하다.
크기가 N 이고, 모든 값이 0인 1차원 리스트를 초기화
리스트의 인덱싱과 슬라이싱
인덱스 값을 이용하여 리스트의 특정한 원소에 접근하는 것을 인덱싱.
또한 리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때는 슬라이싱을 이용할 수 있음.
리스트 컴프리핸션(특정크기의 2차원 리스트 초기화시 반드시!)
리스트를 초기화 하는 여러방법 중 하나이다.
=> 대괄호 안에 조건문과 반복문을 넣는 방식으로 초기화할 수 있다.
tip) 이러한 리스트 컴프리 핸션은 코테에서 2차원 리스트를 초기화할때 매우 효과적으로 사용됨
example코드 잘확인 몰랐던 것!
ex)
summary = 0 for _ in range(5) :
for i in range(1, 10): print("hello world")
summary += i
print(summary)
리스트 관련 기타 메소드 example 코드 확인
파이썬에는 없는 remove_all()같은 함수 구현 exampel 코드 확인
=> 집합과 not in 사용
문자열 자료형
백슬래쉬를 사용하면, 큰따옴표나 작은따옴표를 문자열에 원하는 만큼 포함시킬 수 있다.
튜플 자료형(그래프 알고리즘을 구현할때 자주 사용)
리스트와 거의 비슷하지만, 다음과 같은 차이가 있음
1)튜플은 한 번 선언된 값을 변경할 수 없다.
2)리스트는 []를 이용하지만, 튜플은 소괄호()를 이용함.
ex) 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘의 내부에서는 우선순위 큐를 이용하는데 해당 알고리즘에서 우선순위 큐에 한 번 들어간 값은 변경되지 않는다. 그래서 그 우선순위 큐에 들어가는 데이터를 튜플로 구성하여 소스코드를 작성한다.
사전 자료형
1) 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형이다. 앞서 다루었던 리스트나 튜플은 값을 순차적으로 저장한다는 특징이 있다.하지만 사전 자료형은 키-값 쌍을 데이터로 가진다는 점에서, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다.
2) 파이썬의 사전자료형은 내부적으로 해시 테이블(HashTable)을 이용하므로 기본적으로 데이터의 검색 및 수정에서 있어서 O(1)의 시간에 처리할 수 있다.
3) 사전 자료형을 이용하는 경우 -> 사전 자료형에 특정한 원소가 있는지 검사하는,,! "원소 in 사전"의 형태를 사용할 수 있다.
ex)학생 번호가 주어졌을때 해당 학생이 선택되었는지 여부를 출력하는 문제 => 특정 데이터가 이미 등장한 적이 있는지를 체크할때 매우 효과적
집합 자료형의 연산
합집합, 차집합, 교집합
집합 자료형 관련 함수
비교 연산자, 논리연산자, in & not in 연산자
pass문 : 조건문의 값이 참이라고 해도, 아무것도 처리하고 싶지 않을 때 pass문을 이용
조건문에서 실행될 코드가 한 줄인 경우, 굳이 줄 바꿈을 하지 않고도 간략하게 표현 수 있다.
조건부 표현식을 이용하면 if - else문을 한 줄에 작성해 사용할 수 있다.
score = 85
result = "Success" if score >= 80 else "Fail"
a = [1,2,3,4,5,5,5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
tip) 다른 언어와 달리 파이썬은 조건문 안에서 수학의 부등식을 그대로 사용 가능
x = 15 x = 15
if x > 0 and x < 20 : if 0< x < 20 :
위의 2개의 식이 같음.
함수
def 함수명(매개변수):
실행할 코드
return 반환 값
해당 함수에서는 지역변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 된다.
a = 0
def func():
global a
a += 1
for i in ragne(10):
func()
* 람다 표현식도 가능
print((lamda a, b:a+b)(3,7)
if) 입력을 받아야하는 데이터의 개수가 많지 않다면
n, m, k = map(int, input().split())
if) 입력을 최대한 빠르게 받아야 하는 경우
import sys
sys.stdin.readline().rstrip()
<출력>
answer = 7
print("정답은" + answer + "입니다.")
오류!
so)
print("정답은" + str(answer) + "입니다.")
print("정답은" , str(answer) , "입니다.")
print(f"정답은 {answer}입니다.")
1) 내장함수
2) itertools
3) heapq
4) bisect
5) collections
6) math
example코드 확인
permutaions : 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산해준다.
파이썬의 힙은 최소 힙으로 구성되어 있으므로 단순히 원소를 힙에 넣었다가 빼는 것만으로도 시간 복잡도O(NlogN)에 오름차순이 정렬이 완료.
보통 최소 힙 자료구조 최상단 원소는 항상 "가장 작은 원소"이기 때문이다.
파이썬에서는 최대힙을 제공하지 않음 => 따라서 최대힙을 구현해야 할 때는 원소의 부호를 임시로 변경하는 방식을 사용한다. 힙에 원소를 삽입하기 전에 잠시 부호를 바꾸었다가 , 힙에서 원소를 꺼낸 뒤에 다시 원소의 부호를 바꾸면 된다. code확인
biset
이진 탐색을 쉽게 구현할 수 는 라이브러리
정렬된 배열에서 특정한 원소를 찾아야 할 때 매우 효과적으로 사용된다.
biset_left(a, x) = 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
biset_right(a, x) = 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드
위에 두 함수는 정렬된 리스트에서 값이 특정 범위애 속하는 원소의 개수를 구하고자 할 때, 효과적으로 사용될 수 있다.