본문 바로가기

파이썬기초

(14)
<자료구조> 스택과 큐(2) 1. 큐란 * 큐 - 스택과 같이 데이터를 임시 저장하는 자료구조이지만 가장 먼저 넣은 데이터를 가장 먼저 꺼낸다는 차이가 있다. (선입선출구조) - 인큐(enqueue) : 큐에 데이터를 추가하는 행위 - 디큐(dequeue) : 큐에서 데이터를 꺼내는 행위 - 프론트(front) : 데이터가 빠지는 가장 앞쪽 부분 - 리어(rear) : 데이터를 넣는 부분 2. 배열과 큐 - 인큐 : 맨 끝 데이터의 다음 인덱스에 원소를 저장하여 처리의 복잡도는 O(1)이고 cost가 적다. - 디큐 : que[0]에 저장된 원소를 꺼내면서 이후의 원소를 모두 앞쪽으로 옮겨야한다. 따라서 복잡도는 O(n)이고 매우 비효율적이다. ※ 우선순위 큐 : 인큐할 때 데이터에 우선순위를 부여하고 디큐할 때 우선순위대로 꺼내는..
<자료구조> 스택과 큐(1) 1. 스택이란 * 스택 - 데이터를 임시 저장할 때 사용하는 자료구조이다. 후입선출 방식의 입출력 순서를 가진다. - 푸시(Push) : 스택에 데이터를 쌓아 넣는 일 - 팝(Pop) : 스택에서 데이터를 꺼내는 일 - 데이터는 겹겹이 쌓이는 방식으로 푸시하면 top에 쌓이고 pop하면 top에서부터 꺼낸다. 2. 스택의 구현 - 스택을 구현하기 위해 크기가 결정된 고정길이 스택을 클래스를 이용하여 만드려면 어떤 요소들이 필요할까. * 스택 구현 - 스택을 구현하기 위해서는 다음과 같은 요소들이 필요하다. - 스택 배열 : 푸시한 데이터를 list형 배열에 저장하도록 하면 첫번째 푸시한 데이터는 list[0]에 저장된다. - 스택포인터 : 스택에 쌓여있는 데이터의 갯수이다. 가장 마지막에 푸시한 데이터는..
<파이썬 기초> 12. 정규식 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 정규식은 문자를 좀 더 다채롭게 다루게해준다. 예를 들면 마치 주민번호와 같다. 경찰이 익명의 거대한 기부자를 찾는다고 치자. 그 기부자가 99년생 남성이다. 그렇다면 주민번호를 어떻게 조회할까? 마구잡이로 할 필요가 있을까? 아닐 것이다. 99****-1****** 이런식의 번호만 찾으면 되는 것이다. 이와 같은 역할을 하는 것이 정규식이다. 예시를 보기위해 앞서 사용했던 텍스트 파일을 이용하자. 정규식을 사용하기 위해서는 가장먼저 regular expression 모듈을 import해주어야 한다. import re hand = open('practice.txt') for li..
<파이썬 기초> 11. 튜플 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 튜플은 리스트처럼 순서가 있어서 인덱스로 접근이 가능하다. max함수를 통해 최댓값을 쉽게 찾을 수도 있고 반복문도 사용하고 여러모로 편리하다. 그러나 리스트와 달리 변경이 불가능하다는 단점이 있다. 하지만 튜플은 변수를 여러 개 할당가능하다는 점에서 엄청나게 편리한 기능이고, 파이썬에서는 굳이 소괄호를 쓰지 않아도 튜플로 자동으로 인식한다. x, y = 1, 10 print(x, y) # 1 10 x와 y에 쉽게 값을 할당했음을 볼 수 있다. 튜플은 map함수와도 자주 어울린다. x, y = map(int, input('number : ').split()) print(x+y) ..
<파이썬 기초> 10. 딕셔너리 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 파이썬에는 앞서 배웠던 리스트와 비슷하게 딕셔너리가 존재한다. 차이점이라면 순서가 따로 없지만 키(Key)가 존재한다는 것이다. 키의 존재로 파이썬이 엄청난 강점을 갖게 된다. 키가 존재함으로써 값을 찾아낼 때 더 빠르고 더 적은용량으로 가능하게 한다고 한다. X = dict() X['AA'] = 10 X['BB'] = 30 X['CC'] = 70 print(X) print(X['AA']) X['BB'] = X['BB'] + 5 print(X) # {'AA': 10, 'BB': 30, 'CC': 70} # 10 # {'AA': 10, 'BB': 35, 'CC': 70} 먼저 di..
<파이썬 기초> 09. 리스트 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 파이썬에서는 변수에 리스트를 할당할 수 있다. x = ['AA', 'BB', 'CC'] print(x[0]) print(len(x)) # AA # 3 위는 변수 x 에 AA BB CC 를 갖고있는 리스트를 할당시켰다. 인덱스를 이용하여 첫번째에 해당하는 문자를 출력하였다. 그리고 len함수를 통해 길이를 측정하였다. len은 일반 문자에 사용하면 문자의 길이를 나타내지만 리스트에 사용하면 리스트에 존재하는 문자의 갯수를 출력한다. 바꿔 말하면 리스트에 존재하는 항목의 갯수 자체가 리스트의 길이이다. 위를 보면 알 수 있겠지만 참고로 + 연산자로 리스트를 병합할 수도 있고, : (..
<파이썬 기초> 08. 파일 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 우리는 파이썬으로 파일을 읽거나 쓸 수 있다. 파일은 다음과 같은 방식으로 먼저 파이썬으로 불러들일 수 있다. X = open('practice.txt,'r') 위는 X라는 변수에 practice 텍스트 파일을 읽기위해 할당하였다는 뜻이다. 'r'대신 'w'를 사용하면 파일을 쓴다는 의미이다. 참고로 우리가 연습해 볼 텍스트파일은 아래와 같다. 이를 활용하여 파이썬으로 텍스트를 출력해보자. fhand = open(r'C:\Users\Desktop\practice.txt','r') for line in fhand : print(line,end='') # Hi! # I'm harry..
<파이썬 기초> 07. 문자열 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 우리는 파이썬을 통해 문자열을 쉽게 다룰 수 있다. 먼저 예시를 통해 알아보자. 아래는 문자열의 길이만큼 루프를 실행하는 코드를 작성한 것이다. fruit = 'banana' index = 0 while index < len(fruit) : # len()함수로 fruit 변수의 문자열 길이를 측정 letter = fruit[index] # []숫자의 인덱스를 가진 문자 출력 0이 첫 번째임 print(index, letter) index = index + 1 # index에 1을 더함으로써 다음 반복을 다룸 # 0 b # 1 a # 2 n # 3 a # 4 n # 5 a 이번에는..
<파이썬 기초> 06. 루프와 반복문 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 우리는 파이썬에서 루프와 반복문을 통해 반복되는 작업을 빠르고 간단하게 작성할 수 있다. x = 10 while True : # True에서 루프 반복, False에서 루프 끝 if x > 5 : x = x - 1 continue # 루프의 시작으로 if x == 5 : break # 루프에서 나가기 print('Done x :', x) # Done x : 5 위는 While 루프이다. While 뒤에 조건을 쓸 수도 있지만 위는 True 값을 바로 썼다. 단순히 True만 반복되면 무한루프가 형성될 수 있다. 이는 우리가 흔히 보는 마우스의 원이 끝없이 뱅글뱅글 도는 것과 같다..
<파이썬 기초> 05. 함수 이 글은 미시건 주립대학교 찰스 교수의 MOOC강의인 Python for Everybody를 수강하고 정리하며 쓰는 글입니다. 함수는 파이썬의 가장 큰 장점 중 하나이다. 함수는 매번 복잡한 구문을 작성할 필요없이 함수를 통해 저장된 구문을 불러올 수 있다. 이를통해 코드도 매우 짧아질 뿐만 아니라 작성시간도 매우 단축시킬 수 있다. 파이썬에는 이미 많은 내장함수가 포함되어 있다. 예를 들어 print() 함수는 우리가 복잡한 코드를 작성할 필요없이 원하는 문구를 출력할 수 있게 해준다. 또한 파이썬은 함수를 직접만들어서 관리를 할 수도있다. 자주 써야할 코드를 함수를 선언하여 내장시키면 함수만 불러오면 그 코드를 사용할 수 있다. 먼저 매개변수에 대해 알아보자. 매개변수는 변수처럼 사용된다. def 인..