본문 바로가기

전체 글

(24)
객체 지향 프로그래밍 객체지향 프로그래밍에서는 객체들이 톱니바퀴처럼 작동한다.    출처 :  야곰, [ 스위프트 프로그래밍  한빛 미디어 (2022) 44쪽 ~ 46쪽   객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 기존의 명령형 프로그래밍 패러다임의 시각에서 벗어나 여러 개의 독립된 단위인 객체의 모임으로 파악하고자 하는 시각이다. 각각의 객체는 서로 메시지를 주고 받고 데이터를 처리할 수 있다.   객체지향 프로그래밍은 프로그램을 유연하고 쉽게 변경할 수 있도록 작성할 수 있어서 대규모 소프트웨어 개발에 많이 사용된다. 또한 객체만 잘 이해하면 프로그래밍을 더 쉽게 배울 수 있고 소프트웨어 개발과 유지보수를 간편하게 할 수 있으며 직관적으로 코드를 분석할 수 있다는 장점이 있다.   소프트 웨어 공학..
[git flow] git flow 직접 사용해보기 (feat. 터미널 히스토리) 1. git-flow를 소개하면... git-flow는 Vincent Driessen가 "A successful git branching model"이라는 글에서 제안한 브랜치 모델을 일일이 구현하지 않아도 몇 개의 압축된 명령어로 자동으로 구현할 수 있도록 하는 git의 확장이다. 프로젝트 개발을 시작해서 릴리즈 하는 과정에서 각 브랜치별로 목적을 세분화하고 각 목적을 다한 브랜치는 병합 후 자동 삭제되도록 실행된다. 또한 버전별로 릴리즈 되어 완성될 때마다 버전별로 최종 결과물을 담는 master branch가 처음에 따로 생성되고 주 개발은 develop branch를 중심으로 진행되면서 각 branch마다 기능과 역할을 달리하여 여러 개발자가 협업을 하기에 편하고 프로세스 관리에 용이하도록 설계되..
[알고리즘] 그래프-너비 우선 탐색, 깊이 우선 탐색, 최단경로 알고리즘(다익스트라 알고리즘), 최소 신장트리 알고리즘(크루스칼 알고리즘, 프림 알고리즘) *** 아래의 내용은 패스트 캠퍼스 알고리즘 강의 자료(이준희 강사님 저)를 강의를 들으면서 정리한 내용입니다. *** 1. 그래프 (Graph) 이해 (1) 그래프 기본 개념 그래프는 실제 세계의 현상이나 사물을 정점(Vertex) 또는 노드(Node) 와 간선(Edge)로 표현하기 위해 사용 예제 집에서 회사로 가는 경로를 그래프로 표현한 예 (2) 그래프 (Graph) 관련 용어 노드 (Node): 위치를 말함, 정점(Vertex)라고도 함 간선 (Edge): 위치 간의 관계를 표시한 선으로 노드를 연결한 선이라고 보면 됨 (link 또는 branch 라고도 함) 인접 정점 (Adjacent Vertex) : 간선으로 직접 연결된 정점(또는 노드) 참고 용어 정점의 차수 (Degree): 무방향 그..
[알고리즘] 재귀용법, 동적계획법과 분할 정복, 이진탐색, 순차 탐색,백트랙킹,탐욕 알고리즘 *** 아래의 내용은 패스트 캠퍼스 알고리즘 강의 자료(이준희 강사님 저)를 강의를 들으면서 정리한 내용입니다. *** 1. 재귀 용법 (recursive call, 재귀 호출) 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘 작성시 사용되므로, 익숙해져야 함 예제 — 시간 복잡도와 공간 복잡도 factorial(n) 은 n — 1 번의 factorial() 함수를 호출해서, 곱셈을 함 일종의 n-1번 반복문을 호출한 것과 동일 factorial() 함수를 호출할 때마다, 지역변수 n 이 생성됨 시간 복잡도/공간 복잡도는 O(n-1) 이므로 결국, 둘 다 O(n) * 팩토리얼을 구하는 알고리즘을 Recursive Call 을 활용해서 알고리즘 작성하기 n! = n X (n - 1)! 함수를 하나 ..
[알고리즘과 자료 구조] 정렬(feat. 손코딩) *** 아래의 내용은 패스트 캠퍼스 알고리즘 강의 자료(이준희 강사님 저)를 강의를 들으면서 정리한 내용입니다. *** 1. 정렬 (sorting) 이란? 정렬 (sorting): 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것 정렬은 프로그램 작성시 빈번하게 필요로 함 다양한 알고리즘이 고안되었으며, 알고리즘 학습의 필수 2. 버블 정렬 (bubble sort) 이란? 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘 버블 정렬 https://visualgo.net/en/sorting for num in range(len(data_list)) 반복 swap = 0 (교환이 되었는지를 확인하는 변수를 두자) 반복문 안에서, for i..
[자료구조] 트리, 힙, 시간복잡도 *** 아래의 내용은 패스트 캠퍼스 자료구조 강의 자료(이준희 강사님 저)를 강의를 들으면서 정리한 내용입니다. *** 1. 트리 트리 (Tree) 구조 트리: Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조 실제로 어디에 많이 사용되나? 트리 중 이진 트리 (Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용됨 알아둘 용어 Node: 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 레벨에 연결된 노드 C..
[자료구조] 큐, 스택, 링크드 리스트, 해쉬 테이블 *** 아래의 내용은 패스트 캠퍼스 자료구조 강의 자료(이준희 강사님 저)를 강의를 들으면서 정리한 내용입니다. *** 1. 큐 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일 FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대 어디에 큐가 많이 쓰일까? 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제 참조) 출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/ 2. 스택 스택은 LIFO(Last..
[Javascript] 객체 지향 프로그래밍 개념, 함수형 프로그래밍과의 차이점 *** 아래의 내용은 (이웅모 저)책을 공부하며 정리한 내용입니다. *** 객체지향프로그래밍이란? 객체 지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍(imperative programming)의 절차 지향적인 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 구현하는 프로그래밍 패러다임을 말한다. 예를 들어 사람은 이름, 주소, 성별, 나이, 등 다양한 속성을 갖는다. 이 때 이름은 홍길동이고 성별은 남자이고 나이는 20세인 사람과 같이 속성을 구체적으로 표현하면 다른 사람과 구별할 수 있는데 이와 같은 실체와 속성 개념을 프로그래밍 개념에 적용했다고 볼 수 있다. 프로그래밍에 접목해보면, 사람에게는 다양한 속성이 있으나 우리가 구현하려는 ..