잡다로그

[Python] 코테 기초 문법 - 자료형 본문

Algorithm

[Python] 코테 기초 문법 - 자료형

날으는다람쥐 2023. 3. 24. 00:20

자료형

  • 정수형 - 많은 코딩 테스트 문제가 다루는 자료형
  • 실수형 - 소수점 아래 데이터를 포함하는 자료형 
  • 복소수형
  • 문자열
  • 리스트 - C++의 vector, Java의 array list 라이브러리 기능을 가지고 있다.
  • 튜플
  • 사전

실수형

- 지수 표현 방식: 1e9 = 1* 10^9 (10의 9제곱) - 최단 경로 알고리즘에서 도달할 수 없는 노드에 대해 무한(INF)이라는 의미로 임의의 큰 수를 설정한다. 최댓값이 10억 미만이면 무한으로 1e9를 사용할 수 있음.

- 정수 데이터를 처리한다고 하면, 오류를 방지하기 위해 int(2e9) 와 같이 써준다.

- 실수 값의 미묘한 오차로 인한 비교 오류를 방지하기 위해 round() 함수(반올림)를 사용한다.

a = 0.3+0.6

if(round(a, 4)==0.9:	# 소수점 넷째자리에서 반올림하여 셋째자리까지 출력
	print(True)
else:		 	# 그냥 if a==0.9 로 하면 False 출력됨
	print(False)

 

파이썬에서 나누기 연산자(/)를 수행하면 실수형 결과를 반환한다.

나머지 연산자(%)를 효과적으로 사용할 수 있다. (ex. 홀수 판별)

몫 연산자(//), 거듭 제곱 연산자(**) 등도 제공한다.

리스트

- 배열 혹은 테이블이라고 부르기도 한다.

a = [1,2,3,4,5]

n = 10
a = [0] * n		#길이가 1인 리스트를 n번 반복. [n,n,n,n,n,n,n,n,n,n] 출력

- 인덱싱(Indexing): 인덱스로 음의 정수를 넣으면, 원소를 거꾸로 탐색하게 된다. (list[-n] : 뒤에서부터 n번째)

- 슬라이싱(Slicing): 연속적인 위치를 갖는 원소들을 가져올 때. 시작과 끝 인덱스+1을 설정해서 가져온다. 

- 리스트 컴프리헨션: 간결한 리스트 초기화 방법. 대괄호 안에 조건문과 반복문을 적용.

array = [i for i in range(10)]	# [0,1,2,3,4,5,6,7,8,9]
array = [i for i in range(20) if i % 2 == 1]	# [ 1, 3, 5, 6, 9, 11, 13, 15, 17, 19]

2차원 리스트 초기화에 효과적으로 사용됨.

array = [[0] * m for _ in range(n)]

array = [[0]*m] * n		# 잘못된 예시

두 번째의 잘못된 예시는, 내부 리스트 ([0]*m)가 모두 같은 객체로 인식되어 문제가 발생할 수 있다. 

* 파이썬에서 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_)를 사용한다.

fot _ in range(5):
	print("Hello World")

리스트 컴프리헨션을 사용하여 리스트에서 특정 값을 가지는 원소를 모두 제거할 수 있다 (remove 내장함수는 그 값인 원소 하나만 제거)

a = [1,2,3,4,5,5,5]
remove_set={3,5}

redult = [i for i in a if i not in remove_set]	# [1,2,4]

문자열

- " 나 ' 로 문자열 변수 초기화

- 문자열은 특정 인덱스의 값 변경 불가(immutable)

튜플

- 한 번 선언된 값을 변경 불가 (리스트는 가능)

- 소괄호를 이용한다.

- 리스트에 비해 공간 효율성이 좋다. (기능이 제한적이라서 메모리 적게 차지함)

- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때 (ex. 최단 경로 알고리즘에서 (비용, 노드 번호)의 형태로 사용)

- 해싱(hasing)의 키 값으로 데이터의 나열을 사용할 때

사전

- 키와 값을 쌍으로 데이터로 가지는 자료형. 순차 저장이었던 리스트나 튜플과 다르다.

- 해쉬 테이블 등으로 불리기도 한다.

- 키 데이터/값 데이터만 뽑아낼 수 있다. keys(), values()

집합

- 중복을 허용하지 않고, 순서가 없다. 존재 여부를 확인할 때 효과적이다.

- 리스트 또는 문자열을 이용해서 초기화할 수 있다.

- 중괄호 안에 콤마로 원소를 구분한다.

data = set([1, 1, 2, 3, 4, 4, 5])	# {1, 2, 3, 4, 5} 로 출력

- 합집합, 교집합, 차집합 연산을 제공한다.

- 특정 원소가 존재하는지 조회, 하나의 원소 추가/삭제할 때 상수 시간이 소요된다.

- 집합의 원소를 이용해 O(1)의 시간 복잡도로 접근한다.


본 포스팅은 하단의 책과 유튜브 강의를 참고하여 정리한 포스팅입니다.

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - YES24

나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생

www.yes24.com

 

Comments