파이썬으로 자료구조, 알고리즘 배우기
자료구조 학습 필요성
알고리즘 풀이를 위해 자료구조를 알 필요가 있다.
파이썬 문법에 익숙해지고 난 다음 시작하자.
입출력, 문자열, 리스트 등
* 파이썬 기초 문제풀이
https://www.fun-coding.org/daveblog.html 참고
자료구조란,
대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다.
데이터 특성에 따라 데이터를 구조화, 코드 상에서 효율적으로 데이터를 처리하기 위함.
ex) 우편번호, 학번 등
자료구조의 종류
배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등
알고리즘이란,
어떤 문제를 풀기 위한 절차와 방법
어떤 문제에 특정 입력을 넣으면, 원하는 출력을 얻을 수 있도록 만드는 프로그래밍
알고리즘의 성능
시간 복잡도, 공간복잡도를 기준으로 알고리즘의 성능을 평가한다.
개발 환경 설정 (아나콘다 없이)
1. 파이썬 컴파일러 설치 https://www.python.org/downloads/
2. 주피터노트북 설치
cmd 상에서
> pip install --upgrade pip
> pip install jupyter
파이썬에 익숙해지기
파이썬 기초(문제풀이) 1 학습하기
"입력과 출력"
print("Hello World") # 출력
print("%.4f" %3.141592) #소수점 아래 4자리까지
first = input() # string으로 받아옴.
second = input()
print(type(first))
print(int(first) + int(second))
print("hello "*4) # 반복 출력 (반복문 없이)
2**3 # 거듭제곱
https://www.fun-coding.org/python-question1-answer.html
파이썬 기초 (문제풀이): 파이썬 입력과 출력 - 잔재미코딩
기존 유투브 영상은 설명없이 키보드로 코드를 작성하는 모습만 보여드려서 보기가 불편하여, 정답 코드로 대체합니다. 본 컨텐츠는 저작권법의 보호를 받으며, 무단 복제, 가공, 외부 오픈이
www.fun-coding.org
파이썬 기초(문제풀이) 2 학습하기
"조건문과 문자열"
digit1 = 10
digit2 = 2.2
string1 = "hello"
print(type(digit1)) # <class 'int'>
print(type(digit2)) # <class 'float'>
print(type(string1)) # <class 'str'>
code = '000660\n000000102\t12312312' # \t: 탭, \n: 줄바꿈
print(code)
# 000660
# 000000102 12312312
#조건문
digit = 100
if digit < 20:
print('20보다 작습니다.')
elif digit < 50:
print('50보다 작습니다.')
else:
print('50 이상의 수입니다.') # 이것에 해당
파이썬은 배열이 곧 리스트 [ ] list( )
# 인덱스를 이용해 값에 접근이 가능.
user_id = "2022001"
print(user_id[0:4]) # 2022 출력. 0~3 인덱스
문자열 다루는 다양한 함수1 strip()
### strip() 함수
#### 1. strip() : 양끝 공백문자 제거
#### 2. lstrip(): 왼쪽 공백문자 제거
#### 3. rstrip(): 오른쪽 공백문자 제거
#### 1. strip('.') : 양끝 '.' 문자 제거
#### 2. lstrip('.'): 왼쪽 '.' 문자 제거
#### 3. rstrip('.'): 오른쪽 '.' 문자 제거
myString = "a man goes into the room..."
print(myString) # a man goes into the room...
myString = "a man.goes into the room..."
print(myString.strip(".")) # a man.goes into the room
문자열 다루는 다양한 함수2 count(), find(), split()
count() 함수
str.count('a')
a의 갯수 반환
find() 함수
str.find('a')
0 또는 1 반환
split() 함수¶
str.split(",")
문자열을 잘라서 배열로 반환
https://www.fun-coding.org/python-question2-answer.html
파이썬 기초 (문제풀이): 파이썬 조건문과 문자열 - 잔재미코딩
기존 유투브 영상은 설명없이 키보드로 코드를 작성하는 모습만 보여드려서 보기가 불편하여, 정답 코드로 대체합니다. 본 컨텐츠는 저작권법의 보호를 받으며, 무단 복제, 가공, 외부 오픈이
www.fun-coding.org
파이썬 기초(문제풀이) 3 학습하기
"반복문과 리스트"
for 변수 in 반복할객체
(여기서 in 뒤에는 리스트, 튜플, 문자열, iterator, generator 등 순회가능한 데이터타입)
# range(1, 10)은 1~9까지 값
for num in range(1, 10):
print(9,"x",num," = ", 9 * num)
# 문자열을 split한 배열
str = "[hello],[world],[i'm],[yujin]"
for s in str.split(','):
print(s.strip("[]")) # 양끝 [ ] 문자 삭제
enumerate 반복문 동작시 인덱스 자동할당 (tuple 형태)
num_list = [0, -11, 31, 22, -44, -55]
for num in enumerate(num_list): # 인덱스 자동할당 (tuple 형태)
print(num)
num_list = [0, -11, 31, 22, -44, -55]
for num in enumerate(num_list, start=101): # 인덱스 초기번호 설정 가능
print(num)
num_list = [0, -11, 31, 22, -44, -55]
num_list2 = list()
for index, num in enumerate(num_list): # 인덱스 튜플 내 값만 가져오기 가능
print(num)
https://www.fun-coding.org/python-question3-answer.html
파이썬 기초 (문제풀이): 파이썬 반복문과 리스트 - 잔재미코딩
기존 유투브 영상은 설명없이 키보드로 코드를 작성하는 모습만 보여드려서 보기가 불편하여, 정답 코드로 대체합니다. 본 컨텐츠는 저작권법의 보호를 받으며, 무단 복제, 가공, 외부 오픈이
www.fun-coding.org
파이썬 기초(문제풀이) 3 학습하기
"파이썬 데이터 구조" 튜플 / 딕셔너리 / 집합
1. 튜플 ( ) <- 소괄호를 사용
한번 선언하면 바꿀 수 없는 데이터구조
tupleData = ("a","b","c","d","e")
print(tupleData)
tupleData[0] = "A" # 여기서 에러가 남
print(tupleData)
튜플의 값을 바꿔야 한다면? 일단 다른 데이터구조(리스트)로 전환한 후, 값을 변경한다. 그리고 다시 튜플로 전환한다.
tupleData = ('a','b','c')
print(tupleData) # ('a', 'b', 'c')
print(type(tupleData)) # type(listData)
listData = list(tupleData)
print(type(listData)) # type(listData)
listData[0] = 'A'
tupleData = tuple(listData)
print(tupleData) # ('A', 'b', 'c')
print(type(tupleData)) # <class 'tuple'>
2. 딕셔너리 { } <- 괄호를 사용
딕셔너리 key-value 쌍으로 이루어져 있다.
dictData = {1:'a',2:'b',3:'c'}
keys()로 key값 접근 가능
values()로 value값 접근 가능
keys = [data for data in dictData.keys()] # list comprehension
values = [data for data in dictData.values()] # list comprehension
딕셔너리는 key 값으로 value에 접근 가능.
3. 집합
중복되는 값이 없는 데이터 구조
add(), update(), remove(), discard(), pop(), clear(), in, len() 함수 사용 가능
s1 = set({1, 2, 3})
s2 = set([1, 2, 3])
s3 = {1, 2, 3}
https://www.fun-coding.org/python-question4-answer.html
파이썬 기초 (문제풀이): 파이썬 데이터 구조 - 잔재미코딩
기존 유투브 영상은 설명없이 키보드로 코드를 작성하는 모습만 보여드려서 보기가 불편하여, 정답 코드로 대체합니다. 본 컨텐츠는 저작권법의 보호를 받으며, 무단 복제, 가공, 외부 오픈이
www.fun-coding.org
'코딩테스트 > 알고리즘 (Python) ★★★' 카테고리의 다른 글
[자료구조6] 힙 (0) | 2022.07.26 |
---|---|
[자료구조5] 트리 (0) | 2022.07.26 |
[필수] 알고리즘 성능 평가 (시간복잡도, 공간복잡도) (0) | 2022.06.25 |
[자료구조4] 해시 구조 (0) | 2022.06.25 |
[자료구조2] 배열 큐 스택 (0) | 2022.06.14 |