반응형

파이썬으로 자료구조, 알고리즘 배우기

 

 

자료구조 학습 필요성

알고리즘 풀이를 위해 자료구조를 알 필요가 있다.

 

파이썬 문법에 익숙해지고 난 다음 시작하자.

입출력, 문자열, 리스트 등

 

* 파이썬 기초 문제풀이

https://www.fun-coding.org/daveblog.html 참고

 

 

 

 

자료구조란,

대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다.

데이터 특성에 따라 데이터를 구조화, 코드 상에서 효율적으로 데이터를 처리하기 위함.

ex) 우편번호, 학번 등

 

자료구조의 종류

배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등

 

 

 

 

알고리즘이란,

어떤 문제를 풀기 위한 절차와 방법

어떤 문제에 특정 입력을 넣으면, 원하는 출력을 얻을 수 있도록 만드는 프로그래밍

 

알고리즘의 성능

시간 복잡도, 공간복잡도를 기준으로 알고리즘의 성능을 평가한다.

 

 

 


개발 환경 설정 (아나콘다 없이)

 

1. 파이썬 컴파일러 설치 https://www.python.org/downloads/

파이썬 경로설정 체크 필수!

2. 주피터노트북 설치

cmd 상에서 

> pip install --upgrade pip

> pip install jupyter

cmd 창에 설치 명령어 입력

 

 

 


파이썬에 익숙해지기

 

 

파이썬 기초(문제풀이) 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

 

 

반응형

+ Recent posts