CS(36)
-
유용한 라이브러리 시각화 툴 소개 (Pyreverse)
특정 라이브러리를 처음 다운로드 했을 때, 코드가 몇백 줄이 넘어가면 어디서부터 보아야 할지 막막한 경우가 많다. 이 경우 사용하기 좋은 시각화 툴을 하나 소개하고자 한다. Pyreverse Pylint는 Python 코드를 분석하고 코드 품질을 향상시키기 위한 다양한 기능을 제공하는 정적 코드 분석 도구이다. Pyline 안에 포함된 Pyreverse라는 도구는 Python 코드의 구조를 분석하고 이를 시각적으로 표현해주는 기능을 제공한다. Pyreverse는 주로 UML 다이어그램을 통해 클래스와 모듈의 관계를 시각화하는 데 좋다. 설치 및 환경설정Pyreverse를 설치하기 위해서는 Graphviz가 있어야 한다. 아래와 같이 설치해 주자.Windowshttps://graphviz.org/downl..
2024.08.19 -
DFS(Depth-First Search)와 BFS(Breath-First Search)
거대한 그래프에서 특정 조건을 만족하는 노드를 찾는 가장 효율적인 방법은 무엇일까? 본 포스팅에서는 그래프의 노드를 탐색 혹은 방문하는 유명한 알고리즘인 DFS(Depth-First Search)와 BFS(Breadth-First Search)에 대해 소개하고자 한다. DFS(Depth-First Search)DFS는 그래프의 한 경로를 끝까지 탐색한 후, 다른 경로를 탐색하는 방법이다. 깊이를 우선으로 탐색하는 방식이다. DFS는 아래와 같은 특징을 가진다.구현 방식: 재귀나 스택 자료구조를 사용하여 구현한다.완전 탐색: 한 경로의 끝까지 가고, 더 이상 진행할 수 없으면 이전 노드로 돌아와 다른 경로를 탐색한다.메모리 사용량: 경로의 깊이에 비례하여 메모리를 사용한다.예를 들어, 아래와 같은 완전 이..
2024.06.23 -
git의 세 가지 영역과 커밋(commit) (feat. 쿠팡)
본 포스팅에서는 git에서 가장 중요한 기능 중 하나인 커밋이 가지는 의미와, 간단한 명령어 몇 가지를 알아볼 예정이다. git의 세 가지 영역git의 핵심은 버전 관리이기 때문에, 아래와 같이 세 가지 영역으로 나눠서 관리한다.Working DirectoryStaging Areagit directory처음 git을 쓸 때는 "편집된 것 따로, 편집 안된 것 따로 모아서 두 개의 영역만 있으면 되는 거 아닌가? 왜 복잡하게 세 개씩이나 만든 거지?" 라고 생각했었다. 세 개의 영역을 쿠팡에 비유해서 각각 아래와 같이 생각하면 편하다.Working Directory: 물건을 택배 상자에 넣는 행위가 이루어지는 곳Staging Area: 택배 상자를 싣는 트럭git directory: 쿠팡 물류센터물건을 택..
2024.05.13 -
버전 관리의 개념과 종류(local VCS, CVCS, DVCS)
버전 관리란, 파일의 변화를 시간의 따라 기록하는 것을 말한다. 이것이 필요한 이유는 특정 시점의 버전을 다시 꺼내올 필요가 종종 있기 때문이다. 이를 위해서는 VCS(Version Control System)를 사용하는데, 대표적인 VCS이자 개발자들이 가장 많이 사용하는 것으로 git이 있다.버전 관리의 개념나무위키에 버전 관리를 검색해 보면, 아래와 같은 재밌는 사진이 나온다. 버전 관리 없이 문서를 관리하는 경우이다.버전 관리를 통해서는 변경점 관리, 브랜치를 이용한 여러 버전 개발, 백업 및 복구, 협업 등의 작업을 수행할 수 있다.로컬 버전 관리 로컬 VCS는 간단한 DB에 파일의 변경 정보를 관리하는 것이다. 간단하게 구현할 수 있지만 협업 및 복구가 어렵다.대표적인 로컬 VCS로, RCS(..
2024.05.12 -
[프로그래머스 코테] 스택/큐 전문항 해설
스택/큐같은 숫자는 싫어문제 설명배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.제한사항배열 arr의 크기 : 1,000,000 이하의 자연수배열 arr의 원소의 크기 ..
2024.05.02 -
[열혈자료구조] 13강. 해쉬 테이블
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 앞서 나왔던 자료구조 중 일반적인 상황에서 탐색에 가장 효율적인 것은 AVL 트리(https://cascade.tistory.com/99)로 O(logN)의 시간 복잡도를 가지고 있었다. 본 포스팅에서 다룰 자료구조는 탐색을 한 번에 하는, O(1) 짜리 자료구조인 테이블이다. 테이블이란, 사원번호 - 이름 표와 같이 key와 value로 저장된 데이터 구조이다. 여기에는 세 가지 규칙이 있다.Key는 반드시 Value와 쌍을 이룬다Key가 존재하지 않는 값은 저장할 수 없다.어떤 Key도 중복되지 않는다.먼저, 배열을 기반으로 테이블 자료구조를 구현하자.배열 기반의 테이블 구현위에서 든 예와 같이, ..
2024.05.01