자료구조 4

08. 정렬 알고리즘 개념 및 풀이

01. 정렬 알고리즘이란? 정렬(sorting)이란, 순서없이 나열된 자료를 특정한 키값에 따라 오름차순이나 내림차순으로 자료를 재배열한 것을 의미한다. 정렬 알고리즘이 왜 필요할까? 탐색 효율을 높이기 위해서다. 도서관에서도, 원하는 책을 효율적으로 탐색하기 위해서 책이 순서대로 정렬되어있어야 한다. 도서관을 떠올리면 정렬의 필요성을 이해하기 쉽다. 02. 정렬 알고리즘의 종류 2-1. 선택정렬 가장 작은 노드(최소값)를 선택하고 왼쪽부터 정렬을 하기 위해 알맞은 위치와 교환하는 작업을 반복하는 것을 뜻한다. O(n^2)번의 시간복잡도가 필요하며, 작은 수를 하나하나 순차적으로 찾아서 정렬해야 하므로 안정적이지 않다. 2-2. 삽입정렬 삽입정렬은 아직 정렬되지 않은 특정 노드와 정렬된 노드들의 값을 비..

07. 파이썬을 활용한 문제해결

오늘은 파이썬을 활용한 문제 해결 방법을 간단히 살펴보고자 한다. 앞서 내가 주로 사용하는 파이썬 언어는 어떤 언어인지 살펴볼 것이다. 목차 정규표현식(=정규식) 얕은 복사와 깊은 복사 파이썬 01. 정규표현식(=정규식) 정규표현식이란, 특정한 규칙을 가진 문자열의 집합을 사용하는 데에 표현하는 언어다. 주로 복잡한 문자열을 처리할 때 사용한다. 정규표현식의 예시는 무엇이 있을까? 예를 들어, 주민등록번호 뒷자리 7자리를 별표(*) 처리하고 싶다고 할 때, 정규표현식을 사용한다면 보다 간편하고 직관적인 코드를 짤 수 있다. 정규표현식의 더 많은 예시로는, 아래 링크를 걸어두도록 하겠다. https://wikidocs.net/1642 파이썬에서는 이런 정규표현식을 re 모듈로 지원하는데, 딥러닝(텍스트마이..

06. 프로그래밍과 문제해결_내장 메소드

파이썬이랑 알고리즘, 자료구조는 생산을 위한 도구라고 보면 된다. 자료구조와 알고리즘 챕터에서는, 무엇보다 복잡한 문제를 작은 문제로 분할하면서 해결한다라는 아이디어를 갖고 있어야 한다. 문제를 보았을 때, 문제가 어떤 패턴을 갖고 있는지 생각해본 뒤, 작은 문제로 분할해 문제를 풀어보는 과정을 반복해 수행한다고 보면 된다. 자료구조란, 우리가 데이터를 사용함에 있어서, 어떻게 데이터를 저장하고 사용할 지 정의하는 과정이다. 이는 데이터의 효율적인 접근을 목적으로 한다. 데이터를 쉽게 찾기 위해서는 특정 구조로 데이터를 저장해주어야 한다. 알고리즘이란, 문제를 해결하기 위한 단계적 절차를 정의한 것이다. 따라서, 우리는 문제해결능력과 컴퓨팅 사고능력(수학 개념을 컴퓨터로 잘 옮겨내는 능력)을 키워 자료구..

03. 객체지향 프로그래밍 개론

오늘은 객체지향 프로그래밍의 초초초 기초를 간단히 설명해볼 예정이다. 무엇이든 기본을 탄탄히 다지는 것이 중요한 법! 객체와 객체지향 프로그래밍의 개념에 대해 살펴보고, 객체와 class의 관계를 살펴보도록 하자. (보다 더 흥미로운 개념은 다음 포스팅에서..!) 목차 객체란? 객체지향 프로그래밍이란? 객체 틀, 클래스 01. 객체란? 속성과 행동으로 이루어진 존재, 즉 우리가 살면서 보는 모든 존재를 말한다. 예를 들어, 인스타그램 유저는 속성으로 "이메일 주소 비밀번호 친구목록" 등이 있다. 그리고 "좋아요 친구추가" 등의 행동을 할 수 있다. 따라서 속성과 행동이 존재하므로 객체라고 할 수 있다. 자동차처럼 현실에 존재하든, 가상에 존재하든 속성과 행동을 떠올릴 수 있다면 객체라고 할 수 있다. 0..