728x90
파이썬으로 알고리즘을 공부하기에 앞서
기본 개념들을 확실하게 익혀야 할 것 같아서 공부한 기록이다.
자료형
제일 기본적인 자료형이다. 정수형, 실수형, 리스트, 튜플, 문자열, 딕셔너리, 집합이 있다.
새로 알게 된 부분만 기록하려고 한다.
실수
지수 표현 방식
- 파이썬에서는 e나 E를 이용한 지수 표현 방식을 이용할 수 있다.
a=1e9 #10억의 지수 표현 방식
print(a) #1000000000.0
round()
- 컴퓨터 시스템은 실수를 연산할 때 부동 소수점을 이용하기 때문에 정확한 실수 표현이 안 될 수 있다.
- round 메서드를 사용하면, n번째 자리에서 반올림할 수 있다.
import math
b=0.9912314
print(round(b,3)) #0.991
print(math.ceil(b)) #1
print(math.floor(b)) #0
- round를 사용하면, 몇번째 자리에서 반올림할 것인 지 선택할 수 있다.
- call signature을 보면, 옵션으로 몇번째 자리에서 반올림할 것인 지 선택할 수 있도록 오버로딩되어있다.
- ceil과 floor은 이 작업이 안 되어있는 듯하다.
- 애초에 반환값이 int다.
리스트
리스트 초기화
- 곱셈을 사용해서 리스트를 초기화할 수 있다.
#크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
N=10
c=[0]*N
print(c) #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
리스트의 슬라이싱
- 리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때 콜론(:)을 사용해서 슬라이싱할 수 있다.
d=[1,2,3,4,5,6,7]
print(d[4:-1]) #[5, 6]
- 인덱스가 4인 원소부터 마지막 원소 전까지의 리스트 슬라이싱
리스트 컴프리헨션
- 리스트를 초기화하는 방법 중 하나이다. 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화 한다.
#0부터 19까지의 수 중에 홀수만 포함하는 리스트
e=[i for i in range(20) if i%2==1]
print(e) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#1부터 9까지 수의 제곱 값을 포함하는 리스트
f=[i*i for i in range(1,10)]
print(f) #[1, 4, 9, 16, 25, 36, 49, 64, 81]
- 첫 번째에서는 반복문에 i에 대한 조건문을 더해 원하는 조건의 i를 반환하는 듯한 코드
- 두 번째는 i에 대한 반복문을 이용해 i에 대한 연산을 바로 한 코드
변수 반복문 조건문 순서이다.
#N X M 크기의 2차원 리스트 초기화
n=3
m=4
arr=[[0]*m for _ in range(n)]
print(arr) #[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
- 위와 같이 2차원 배열을 초기화할 때 효과적이다.
- 2차원 배열을 초기화할 때 컴프리헨션을 사용하지 않으면, 포괄하는 배열 내부 각각의 배열들이 동일한 객체에 대한 레퍼런스로 인식될 수 있으니 꼭 컴프리헨션을 사용해야 한다.
언더바(_)의 역할
- 반복을 수행하되 변수의 값을 무시하고자 할 때 언더바를 자주 사용한다.
리스트에서 특정 값의 원소를 모두 제거해야 할 때
g=[1,2,3,3,4,4,4,5]
remove_set=[3,4]
result=[i for i in g if i not in remove_set]
print(result) #[1, 2, 5]
튜플
튜플은 소괄호()를 이용한다.
튜플은 한 번 선언된 값을 변경할 수 없다.
- 위와 같은 튜플의 특성을 이용해 변경하면 안 되는 값이 변경되고 있지 않은지 체크할 수 있다.
딕셔너리
딕셔너리는 키와 값의 쌍을 데이터로 가지는 자료형이다. 때문에 순서가 없다.
- 딕셔너리도 앞서 기록한 리스트, 문자열, 튜플처럼 원소들을 차례대로 반복할 수 있는 Iterable 자료형이다.
- 따라서 in 문법도 사용이 가능하다.
집합
특징
- 중복을 허용하지 않는다.
- 순서가 없다.
집합의 초기화
data=set([1,1,2,3,4,5,5])
print(data) #{1, 2, 3, 4, 5}
data={1,2,2,3,4,4,5}
print(data) #{1, 2, 3, 4, 5}
- set 메서드 안에 리스트를 넣어준다.
- 중괄호({}) 안에 원소를 넣어준다.
함수
함수 부분에서는 람다 표현식에 관해 새로 알게 되었다.
람다 표현식
- 람다 표현식을 사용하면 함수를 매우 간단하게 작성하여 적용할 수 있다.
print((lambda a,b:a+b)(3,7)) #10
입출력
입출력 부분에서는 코딩테스트에서 유용하게 쓰일 만한 것들을 공부했다.
Input 데이터 관리
- 코딩 테스트에서는 입력이 보통 아래와 같이 주어진다.
3
1 12 54
- Input 데이터를 효과적으로 관리할 수 있을까
- list(map(int, input().split())) 을 이용하면 된다.
list(map(int,input().split()))
- 위에서 작성한 예시를 입력으로 받는다고 가정하자.
- input().split() : 공백으로 구분하여 데이터를 리스트로 저장한다.
- map(int, ) : map 함수는 첫 번째 인자로 받은 함수를 두 번째 인자를 순회하며 적용한다.
readline()
- 파이썬에서 input() 함수는 동작 속도가 느려서 시간 초과로 오답을 받을 수도 있다.
- sys 라이브러리에 정의되어 있는 sys.stdin.readLine() 함수를 이용하면 보다 빠르게 입력을 받을 수 있다.
- 입력 후 개행 문자를 없애기 위해 rstrinp() 함수를 꼭 사용해야 한다.
data=sys.stdin.readline().rstrip()
print(data)
출처
이것이 취업을 위한 코딩 테스트다 -나동빈
이것이 취업을 위한 코딩 테스트다 with 파이썬
IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다.
www.hanbit.co.kr
728x90
'Python' 카테고리의 다른 글
[Python] Phython Asterisk(*) 사용법 (0) | 2022.12.11 |
---|---|
[Python] Python iter, enumerate 함수 (0) | 2022.12.10 |
[Python] 파이썬 주요 라이브러리(math,iter,heapq,bisect,collections) (0) | 2022.12.03 |
[Python] Python format 사용법 (0) | 2022.07.12 |