TDD(Test Driven Development) TDD(Test Driven Development) 란 테스트 주도 개발(TDD, Test Driven Development)은 소프트웨어를 개발하는 여러 방법론 중 하나이다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성 하고 난 후 테스트를 거치게 된다. TDD 방법론에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 작동하는지 검증하기 위한 테스트 코드를 우선 작성한다. 이를 통하여 테스트가 실패할 경우 테스트를 통과하기 위한 최소한의 코드로 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링하는 과정을 거치게 된다. * 정리 TDD 란 Test-Driven Development 로 개발(코드 ..
데브옵스(DevOps) 데브옵스(DevOps) 는 방법론이다. 즉 개발 조직에 따라서 다르게 적용될 수 있다. 데브옵스(DevOps) 란 데브옵스(DevOps)란 소프트웨어의 개발(Development)와 운영(Operations)의 합성어로 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론이다. 데브옵스는 정확한 정의가 존재하지 않는 추상적 개념에 해당하지만 소프트웨어 개발 조직과 운영조직 간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다. 데브옵스(DevOps) 수명 주기 DevOps 수명 주기는 개발(루프의 왼쪽) 및 운영(루프의 오른쪽)에 필요한 프로세스, 기능 및 도구를 나타내는 6단계로 구성 된다. 각 단계에서 팀은 공동작업..
힙(Heap) 힙(Heap) 완전 이진 트리의 일종이며 여러 값 중 최대 값과 최소 값을 빠르게 찾아내도록 만들어진 자료구조이다. 이진 탐색 트리가 중복 값을 허용하지 않는 것과 달리 힙 트리는 중복된 값을 허용한다. 힙(Heap) 종류 [최대 힙(Max heap)] 부모 노드이 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리이다. [최소 힙(min heap)] 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리이다. 구현 힙은 배열을 사용하여 구현하게 된다. 구현을 쉽게 하기 위하여 배열의 첫 번째 인덱스인 0은 사용하지 않는다. 특정 위치의 노드 번호는 새로운 노드가 추가되어도 변하지 않는다. 부모 노드와 자식 노드의 관계 왼쪽 자식 index = (부모 index)..
리팩토링(Refactoring) 과 시큐어 코딩(Secure Coding) 리팩토링(Refactoring) 이란 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법이다. 이 과정은 코드를 쉽게 이해하고 유지보수를 좋게 하는 것에 초점이 맞춰져야 한다. 가깝게 볼 때 클린 코드와 리팩토링의 차이가 별로 없어 보이지만 클린코드는 단순하게 가독성을 높이기 위한 작업인 반면 리팩토링은 클린 코드를 포함하여 유지보수를 위한 코드의 개선이라고 볼 수 있다. 클린 코드와 같은 부분은 설계단계에서 잘 이루어져 있는 것이 중요하고, 리팩토링은 결과물이 나온 이후 수정이나 추가 작업이 진행될 때 개선해 나가는 단계이다. 리팩토링(Refactoring) 목적 리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게..
클린 코드(Clean Code) 클린 코드(Clean Code) 란 읽기 쉬운 코드가 "클린 코드(Clean Code)" 이다. 클린 코드의 가장 중요한 요소는 가독성이다. 즉, 모든 팀원이 이해하기 쉽도록 작성된 코드를 의미한다. 일반적으로 기존 코드를 변경하고자 할 때, 해석하는 시간과 수정하는 비율이 10:1 이라고 한다. 예를 들면, 코드를 변경하기 위해서 걸리는 전체 시간이 10시간이라고 하면, 사전에 코드를 분석하는 시간이 9시간 이상 걸린다는 것을 의미한다. 위의 그래프처럼 변경 비용과 대응 속도에 대한 이상치와 실제 프로젝트에서 발생하는 수치가 차이나는 이유는 프로젝트 초기에 클린코드로 개발하기 보다는 좀 더 빠르고 쉬운 방법을 선택하기 때문이다. 대표적인 것이 'Copy & Paste'이..
DFS(Depth First Search, 깊이 우선 탐색) BFS(Breadth First Search, 너비 우선 탐색) DFS(Depth First Search, 깊이 우선 탐색) 란 루트 노드 혹은 다른 임의의 노드에서 다음 분기(Branch)로 넘어가 기전에 해당 분기를 완벽하게 탐색하는 방법이며 스택(Stack) 혹은 재귀함수(Recursion)로 구현된다. 코드(Python) """ 1 / | \ 2 5 9 | /\ | 3 6 8 10 / | 4 7 """ graph = { 1: [2,5,9], 2: [3], 3: [4], 4: [], 5: [6,8], 6: [7], 7: [], 8: [], 9: [10], 10: [] } def recursive_dfs(v, visited = []): vi..
최소 공통 조상(Lowest Common Ancestor, LCA) 최소 공통 조상(Lowest Common Ancestor, LCA) 란? 최소 공통 조상(LCA) 란 두 노드의 공통된 조상 중에서 가장 가까운 조상을 찾는 알고리즘 이다. 즉 두 정점이 만나는 최초 부모 정점을 찾는 것을 의미한다. 최소 공통 조상(Lowest Common Ancestor, LCA) 알고리즘 모든 노드에 대한 깊이(Depth)를 계산한다. 최소 공통 조상을 찾을 두 노드를 확인한다. 먼저 두 노드의 깊이(Depth)가 동일 하도록 거슬러 올라간다. 이후에 부모가 같아질 때까지 반복적으로 두 노드의 부모 방향으로 거슬러 올라간다. 최소 공통 조상을 찾을 두 노드를 확인한다. LCA 알고리즘 풀이 이해 1. 각 노드의 "D..
이진 탐색(Binary Search) 이진 탐색(Binary Search) 란? 정렬되어 있는 배열에서 특정한 값을 찾아내는 알고리즘이다. 배열의 중간에 있는 임의의 값을 선택하여 찾고자 하는 값 X 와 비교한다. X 가 중간 값보다 작으면 중간 값을 기준으로 좌측의 데이터를 대상으로, X 가 중간 값보다 크면 우측을 대상으로 다시 탐색한다. 동일한 방법으로 다시 중간의 값을 임의로 선택하고 비교한다. 해당 값을 찾을 때까지 이 과정을 반복한다. 코드(Python) # 반복 알고리즘 def binary_search(arr, target): low, high = 0, len(arr) - 1 while low target: high = mid - 1 if arr[mid] == target: return mi..
- Total
- Today
- Yesterday
- CS 스터디
- 자료구조와알고리즘 23강
- 네트워크
- 자바
- 리스트함축
- CS.
- 프로세스 주소공간
- It
- 스터디
- https
- 데이터베이스
- 자료구조
- 연결리스트활용
- 코드업 기초
- 보험
- SW
- Greedy sort
- 완전탐색
- 정렬
- 프로그래머스
- 운영체제
- 리스트 복사
- 프로그래머스강의
- 파이썬
- 이차 리스트
- 이진탐색
- 리스트2
- 리스트
- CS
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |