Today
Total
07-03 00:02
관리 메뉴

T-coding

코딩테스트를 위한 파이썬 문법(자료형) 본문

Python

코딩테스트를 위한 파이썬 문법(자료형)

Tcoding 2023. 3. 1. 09:00
728x90
728x90

나동빈 님의 이것이 취업을 위한 코딩 테스트다 with 파이썬 책을 보고 참고하여 작성한 글입니다.

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

 

수 자료형

정수형

# 양의 정수
a = 1000 

# 음의 정수
a = -7 

# 0
a = 0

 

실수형

# 양의 실수
a = 157.93

# 음의 실수
a = -1837.2

# 소수부가 0일 때 0을 생략
a = 5.

# 정수부가 0일 때 0을 생략
a = -.7

# 10억의 지수 표현 방식
a = 1e9

# 752.5
a = 75.25e1

# 3.954
a = 3954e-3

# 0.899999999999999999
a = 0.3 + 0.6

# 0.9
a = round(0.3 + 0.6, 4)

 

수 자료형의 연산

a = 7
b = 3

# 나누기(2.333333333333) 기본적으로 실수형
a / b

# 나머지(1)
a % b

# 몫(2)
a // b

# 거듭제곱(343)
a ** b

 

 

리스트 자료형

배열 기능 포함, 연결리스트를 채택하고 있으므로 append(), remove() 등의 메서드 지원. C++의 vertor와 유사

 

리스트 만들기

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 인덱스 4, 즉 다섯 번째 원소에 접근
a[4]

# 빈 리스트 선언 방법 1)
a = list()

# 빈 리스트 선언 방법 2)
a = []

# 크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n

 

리스트의 인덱싱과 슬라이싱

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 뒤에서 첫 번째 원소 출력
print(a[-1])

# 뒤에서 세 번째 원소 출력
print(a[-3])

# 네 번째 원소 값 변경
a[3] = 7

# 두 번째 원소부터 네 번째 원소까지 출력
print(a[1 : 4])

 

리스트 컴프리헨션

# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]

# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1, 10)]

# n X m 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n)]

2차원 리스트를 초기화할 때 리스트 컴프리헨션을 사용하지 않는다면 내부적으로 포함된 3개의 리스트가 모두 동일한 객체에 대한 3개의 레퍼런스로 인식되어 문제가 생길 수 있음.

 

 

리스트 관련 기타 메서드

a = [1, 4, 3]

# 리스트에 원소 삽입
a.append(2)

# 오름차순 정렬
a.sort()

# 내림차순 정렬
a.sort(reverse = True)

# 리스트 원소 뒤집기
a.reverse()

# 특정 인덱스에 데이터 추가(인덱스 2에 3 추가)
a.insert(2, 3)

# 특정 값인 데이터 개수 세기(값이 3인 데이터 개수)
a.count(3)

# 특정 값 데이터 삭제(값이 1인 데이터 삭제)
a.remove(1)

# 특정 값의 원소를 모두 제거하는 방법
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in a i not in remove_set]

insert() 함수를 사용하면 리스트의 원소 위치를 조정해줘야 하기 때문에 시간복잡도가 O(N)이다. 유의해서 사용해야 한다.

remove() 메서드도 마찬가지이다.

 

 

문자열 자료형

문자열 초기화

문자열을 큰따옴표로 구성하는 경우 내부적으로 작은따옴표 포함 가능, 작은따옴표로 구성하는 경우 큰따옴표 포함 가능

백슬래시( \ )를 사용하면 원하는 만큼 포함 가능

data = 'Hello World'

# Don't you know "Python"?
data = "Don't you know \"Python\"?"

 

문자열 연산

# Hello World
a = "Hello"
b = "World"
print(a + " " + b)

# StringStringString
a = "String"
print(a * 3)

# CD
a = "ABCDEF"
print(a[2 : 4])

 

 

튜플 자료형

리스트와의 차이

  • 튜플은 한 번 선언된 값을 변경할 수 없다.
  • 리스트는 대괄호([ ])를 이용하지만, 튜플은 소괄호(( ))를 이용한다.

그래프 알고리즘을 구현할 때 자주 사용

ex) 다익스트라 최단 경로 알고리즘처럼 최단 경로 알고리즘 내부에서는 우선순위 큐를 이용하는데, 해당 알고리즘에서 우선순위 큐에 한 번 들어간 값은 변경되지 않는다. 그래서 그 우선순위 큐에 들어가는 데이터를 튜블로 구성하여 소스코드를 작성한다.

자신이 알고리즘을 잘못 작성함으로써 변경하면 안 되는 값이 변경되고 있지는 않은지 체크할 수 있다.

a = (1, 2, 3, 4)

 

 

사전 자료형

키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형

내부적으로 해시 테이블을 이용하므로 데이터 검색 및 수정에 있어서 O(1)의 시간에 처리 가능

키(Key) 값(Value)
사과 Apple
바나나 Banana
코코넛 Coconut
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

# 사전 자료형에 특정한 원소가 있는지 검사
if '사과' in data:
	print("'사과'를 키로 가지는 데이터가 존재합니다.")
    
# 키 데이터만 담은 리스트
key_list = data.keys()

# 값 데이터만 담은 리스트
value_list = data.values()

# 각 키에 따른 값을 하나씩 출력
for key in key_list:
	print(data[key])

 

 

집합 자료형

집합(Set)을 처리하기 위한 집합 자료형

  • 중복을 허용하지 않는다.
  • 순서가 없다.

특정한 데이터가 이미 등장한 적이 있는지 여부를 체크할 때 매우 효과적이다.

# 집합 자료형 초기화 방법 1 ( {1, 2, 3, 4, 5} )
data = set([1, 1, 2, 3, 4, 4, 5])

# 집합 자료형 초기화 방법 2 ( {1, 2, 3, 4, 5} )
data = {1, 1, 2, 3, 4, 4, 5}

---------------------------------------------

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

# 합집합 ( {1, 2, 3, 4, 5, 6, 7} )
a | b

# 교집합 ( {3, 4, 5} )
a & b

# 차집합 ( {1, 2} )
a - b

---------------------------------------------

data = set([1, 2, 3])

# 새로운 원소 추가
data.add(4)

# 새로운 원소 여러 개 추가
data.update([5, 6])

# 특정한 값을 갖는 원소 삭제
data.remove(3)

 

 

 

 

 

 

 

728x90
300x250