목록파이썬 (7)
책 읽다가 코딩하다 죽을래
이 강의는 시리즈 별로 되어있습니다. 클린코드 강의 0. 클린코드의 목적[클릭] 클린코드 강의 1. 의미 있는 이름[클릭] 클린코드 강의 2. 추상화[클릭] 클린코드 강의 3. 예외[클릭] 클린코드의 세 번째 원칙 예외입니다! 📖 리팩토링이란? 리팩토링은 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스이다. 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것, 겉으로 보이는 소프트웨어의 기능을 변경하지 않는 것이다. 현업에서의 웹 개발자는 완성된 프로젝트란 없습니다. 프로젝트가 완성되면 요구사항이 생기고 그 요구사항을 완료하면 또 다른 요구사항이 생기기 때문입니다. 우리는 요구사항을 구현해주기 위해서는 코드를 한줄한줄 읽어보면서 이해해야 하고 다..
이 강의는 시리즈 별로 되어있습니다. 클린코드 강의 0. 클린코드의 목적[클릭] 클린코드 강의 1. 의미 있는 이름[클릭] 클린코드 강의 3. 예외[클릭] 클린코드 강의 4. 리팩토링[클릭] 클린코드의 두 번 째 원칙 추상화입니다! 이것의 구조는 접점(接點)과 그것을 동작시키는 기구로 되어 있다. 손으로 동작시키는 간단한 것에서 전자력(電磁⼒)에 의하여 작동되는 대형까지 매우 많은 방식과 구조가 있다. 전력용에서는 개폐에 수반돼 는 불꽃이나 열에 의한 접점의 소손(燒損)을 피하기 위하여 빨리 끊는 기구를 설치한 것이 있으며, 대형 에는 소호 장치(消弧裝置)를 붙이기도 한다. 신호회로에는 다접점(多接點)의 이것이 사용되며 또 전기 신호로 동작하는 계전기(릴레이) ·진공관 ·반도체 등을 이용한 이것은 논리회..
이 강의는 시리즈 별로 되어있습니다. 클린코드 강의 0. 클린코드의 목적[클릭] 클린코드 강의 2. 추상화[클릭] 클린코드 강의 3. 예외[클릭] 클린코드 강의 4. 리팩토링[클릭] 클린코드의 첫 번 째 원칙 의미 있는 이름입니다! 📖 의미 있는 이름이란? 변수 이름을 짓는 것은 프로그래머에 있어서 대단히 중요한 문제입니다. 한 번 지은 이름이 10번이고 수십 번이고 쓰이기 때문입니다. (코드는 파이썬이지만 파이썬은 몰라도 다른 언어의 기본 배경지식을 이용해 이해할 수 있다면 상관없습니다.) mca = 3 다음 코드를 봅시다. 무엇을 설명하는 것 같아 보이나요? 만약 제가 이런 코드를 작성한다면, 6개월 후에 mca라는 단어를 보고 원래 의미를 떠올릴 수 있을까? 하물며, 이 코드를 본 다른 개발자는 무..
📚 DP(동적계획법)란? 큰 문제를 작은 문제로 나누어 푸는 것인데 이때 하나의 문제는 한 번만 풀어야 합니다. 동적 계획법에 대해 설명하기 딱 좋은 예시가 있는데 그것은 피보나치수열입니다. 📚 피보나치 수열이란? 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. ❓ 그러면 피보나치수열의 몇 번째 항을 바로 알 수 있는 코드를 짜려면 어떻게 해야 할까요? 피보나치의 규칙을 살펴보면 된다. 첫 번째와 두 번째는 무조건 1이고 다음 항부터는 Fibo(n) = Fibo(n - 1) + Fibo(n - 2) 이 반복된다. 우리는 이것을 재귀 함수로 쉽게 구현할..
📚 BFS (Breadth-First Search) 란? 한 노드를 시작으로 인접한 모든 정점들을 우선 방문하는 방법이다. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서 넓이 우선 검색을 적용한다. DFS는 인접한 한 노드를 끝까지 탐색했다면 BFS는 인접한 모든 정점을 방문합니다. 이걸 다시 말하면 인접한 노드 중 방문하지 않은 모드 노드들을 저장하고, 가장 처음에 넣은 노드를 꺼내서 탐색하면 됩니다. 처음에 넣은 노드이므로 큐를 이용해서 BFS를 구현할 수 있다. 📋 BFS 전체 과정 BFS의 알고리즘 방식을 설명하면 다음과 같다. 1. 루트 노드를 큐에 넣는다 2. 현재 큐의 노드를 빼서 visited에 추가한다. 3. 현재 방문한 노드와 인접한 노드 중 방문하지 않..
📚 DFS란(Depth First Search)? DFS는 자료의 검색 트리나 그래프를 탐색하는 방법 중 하나이다. 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 와서 다음을 탐색하여 검색한다. DFS는 이름에 나와있는 그대로 끝까지 탐색하는 거에 초점을 맞춥니다. 그래서 그래프의 최대 깊이만큼의 공간을 요구하며, 이는 공간을 적게 쓰는 것입니다. 그러나 최단 경로를 탐색하기는 쉽지 않다. 모든 경로를 탐색하는 것이 아니기 때문입니다. 📋 DFS 전체 과정 DFS의 알고리즘 방식을 설명하면 다음과 같다. 1. 노드를 방문하고 깊이 우선으로 인접한 노드를 방문한다. 2. 또 그 노드를 방문해서 깊이 우선으로 인접한 노드를 방문한다. 3. 만약 끝에 도달했다면 리턴한..
GD프로젝트 알고리즘 수업 2주 차가 시작되었다. 그럼 2주 차에 배운 내용과 풀었던 알고리즘 문제에 대해 설명하겠다. 목차 1. 새롭게 배운 내용(Array, LinkedList, 이진 탐색, 재귀 함수) 2. 재귀 함수 문제 1. 새롭게 배운 내용 1. Array vs LinkedList 더보기 자료구조 중에서 자주 쓰이는 Array와 LInkedList를 서로 비교하겠다. 언어는 Python 기준으로 하겠다. (선언할 때 배열 크기를 정해야 하는 c++, 자바의 정적 배열과는 달리 Python의 배열은 동적 배열이다.) 다음 간단한 배열의 예를 들어보자 배열은 index와 데이터로 이루어져있다. index는 0으로부터 시작되며 데이터의 순서를 매기며 데이터는 int형부터 시작되어 그 어떤 데이터 타..