본문 바로가기
728x90
반응형

Python/Python Data Structure and Algorithm17

[자료구조 with Python] 5. 선형 자료 구조 - 배열(3), 선형/이진 검색 앞선 포스팅에서 배열에 대해 설명을 할 때, 배열은 서로 연관된 정보를 하나의 이름으로 관리하는 자료구조라는 뉘앙스로 설명했던 적이 있다. 관련있는 자료를 인접한 메모리에 저장하기 때문에 일반적인 변수에 선언하여 값을 저장하는 것보다 훨씬 빠르게 값을 검색하는 것이 가능해진다. 배열에 존재하는 값을 검색하는 가장 기본적인 방법은, 배열의 0번 index부터 순차적으로 비교하면서 같은 값이 있는지 확인하는 것이다. 컴퓨터의 성능이 좋거나 배열의 크기가 그렇게 크지 않다면 나쁘지 않은 방법이나, 역으로 배열의 크기가 무수히 커지거나, 컴퓨터 성능이 그렇게 좋지 않은 경우라면 이런 기본적인 검색 방법으로는 효율성이 떨어질 수 밖에 없다. 이러한 이유로, 배열 내에 존재하는 값을 효율적으로 검색하기 위한 몇몇 .. 2021. 1. 5.
[자료구조 with Python] 4. 선형 자료 구조 - 배열(2), 기본 메서드/함수 동작 Python에서 사용되는 모든 자료형은 Class로 정의가 되어 있으며, 각 자료형은 각각의 Method를 가지고 있다. 예를 들어 Python에서 배열의 한 종류인 List는 배열은 내부에 정의된 값의 순서를 반대로 지정하는 reverse() 메서드, 배열의 가운데 또는 마지막에 값을 추가하는 insert(), append() 메서드, 혹은 리스트의 모든 내용을 삭제하는 clear() 메서드 등... Python이 아닌 C와 같이 오래 전에 컴퓨터를 제어하는 언어들은, 위와 같이 배열의 값을 추가하거나, 빼거나, 순서를 변경하는 모든 작업을 일일이 코딩해주어야 했다. 즉, 프로그래머들이 특정 기능을 수행하는 함수를 만들어 코드를 어떻게 작성하느냐에 따라 프로그래밍의 효율과 처리 시간에 차이가 날 수 밖.. 2021. 1. 2.
[자료구조 with Python] 3. 선형 자료 구조 - 배열(1) 1. 배열 거의 모든 프로그래밍 언어는 서로 연관된 변수 값을 묶어서 저장할 수 있는 배열이라는 기능을 제공한다. 이 배열이 프로그래밍에서 매우 유용한 이유는 메모리의 효율적인 관리와 관련이 있다. 배열이 어떻게 효율적인 메모리 관리에 도움이 되는지 살펴보려면 조금 옛날로 돌아가 C언어가 주력으로 사용되던 시점으로 돌아가야 한다. C 언어에서 변수 3개를 int 형태로 선언해보려 한다. 이 변수들을 선언하면 메모리에 다음과 같은 일이 발생한다. 각각의 변수값이 메모리의 임의 구역에 저장되며, 해당 구역은 변수명으로 이름이 지정된다. 대부분의 C 언어 기본서에서는 변수명이 적혀있는 상자에 값이 저장되는 것으로 설명을 하는데, 위의 그림에 대입하자면, 메모리의 여러 상자 중, 1이 들어간 상자는 a라고 지정.. 2020. 12. 13.
[자료구조 with Python] 2. 알고리즘이란. 1. 알고리즘(Algorithm)이란 무엇인가 알고리즘. 요즘에는 유투브 덕에 이 말을 많이 듣는다. "유투브 알고리즘이 나를 이곳으로 이끌었다". 그래서 이 알고리즘이라는 단어가 컴퓨터의 등장 이후 발생한 단어라고 알고 계신 분들이 많을 듯 하다. 하지만, 의외로 이 알고리즘은 최초의 컴퓨터가 탄생하기 이전에도 존재했던 단어이고, 지금도 우리의 일상에서도 물론이거니와 기원전의 생활에서도 얼마든지 볼 수 있다. 알고리즘은 어떤 일을 함에 있어서 "일을 효율적으로 처리하기 위한 절차"라고 생각하면 된다. 예를 들어, 라면을 하나 끓인다고 가정해보자. 라면 끓이는 방법이야 사람마다 제각각이고 개인의 경우에도 자기 기분에 따라 면을 먼저 넣는 날이 있을 것이고 스프를 먼저 넣는 날이 있을 것이다(가장 중요한 .. 2020. 12. 12.
[자료구조 with Python] 1. 왜 갑자기 자료구조인가? 필자가 프로그래밍에 주로 사용하는 언어는 Python이다. 물론, 컴공을 전공한 것도 아니고, 독학으로 깨작깨작 배운 것이 전부이기 때문에 실무를 진행하는 프로그래머만큼은 실력이 쌓이지는 않았다만, 나름 필자의 업무도 Python을 이용한 스크립트 작성이 없지는 않은데다(심지어 그 결과도 좋았고), 혼자 쏠쏠히 필요한 프로그램을 만들어서 사용할 정도는 되었기 때문에 그 이상으로 배움에 큰 의지를 가지지 못해왔던 것도 사실이다. 아, 그래서 왜 갑자기 자료 구조를 보게 되었느냐고? 사연이 있다. 필자는 현재 SE를 업으로 삼고 있다. 이 분야를 잘 모르는 분들에게 조금 풀어서 설명을 하자면, System Engineer인데, 회사에서 판매하는 서버 등에 대해 작동 원리를 익히고, 시스템을 구축하고 문제가 .. 2020. 12. 10.
728x90
반응형