전체 글

항상 최적의 코드를 고민합니다
· Algorithm
# 정의 누적합 알고리즘(Cumulative Sum Algorithm)은, 1차원 배열의 일부 또는 전체 원소들의 합을 빠르게 구할 수 있는 알고리즘입니다. 이 알고리즘은 입력 배열의 각 원소를 한 번씩만 방문하면서, 각 위치에서 누적합을 계산하고, 미리 계산해 둔 누적합을 사용하여 구간 합을 계산합니다. 글로만 읽어도 이해가 갈 정도로 굉장히 간단한 알고리즘입니다. 그래서 겉보기에 그냥 당연한 얘기처럼 보입니다. 하지만 오늘 알고리즘 문제를 풀면서 엄청난 활용을 발견했습니다. # Code 가장 기본적인 파이썬 코드입니다. 정말 간단합니다. # 입력 배열을 정의합니다. arr = [1, 2, 3, 4, 5] # 누적합 배열을 초기화합니다. prefix_sum = [0] * len(arr) prefix_s..
· Algorithm
# 정의 플로이드-워셜 알고리즘은 그래프에서 모든 정점 쌍 간의 최단 경로를 구하는 알고리즘입니다. 다익스트라 알고리즘과는 다르게 음의 가중치를 가진 간선이 있어도 처리할 수 있습니다. 이를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야한다. BFS를 설명할때 이미 했기 때문에 링크만 올려두겠습니다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다. chatGPT에 따른 BFS의 정의는 다음과 같다. BFS(Breadth-First Search) whitem4rk.tistory.com # Code 플로이드-워..
· Algorithm
# 정의 다익스트라 알고리즘은 하나의 시작 정점으로부터 다른 모든 정점까지의 최단 경로를 구하는 알고리즘입니다. 이 알고리즘은 음의 가중치를 가지는 간선이 없을 때(BFS와 큰 차이점)만 사용할 수 있습니다. 다익스트라를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야한다. 다른 글에서 설명을 이미 했기 때문에 링크만 올려두겠다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다. chatGPT에 따른 BFS의 정의는 다음과 같다. BFS(Breadth-First Search) whitem4rk.tistory.c..
· Algorithm
# 정의 너비우선탐색이라 불리는 DFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다. chatGPT에 따른 DFS의 정의는 다음과 같다. DFS는 그래프의 한 노드에서 시작하여 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법입니다. 즉, 더 이상 탐색할 수 없을 때까지 깊이 우선으로 탐색합니다. DFS를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야한다. BFS를 설명할때 이미 했기 때문에 링크만 올려두겠다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리..
· Algorithm
# 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다. chatGPT에 따른 BFS의 정의는 다음과 같다. BFS(Breadth-First Search) 알고리즘은 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘입니다. 이 알고리즘은 너비 우선 탐색을 하며, 시작 노드에서 가까운 노드들부터 우선적으로 방문합니다. BFS를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야한다. # Graph 그래프(Graph)는 데이터를 저장하고 관리하는 자료구조 중 하나로, 객체들 간의 관계를 나타내는 추상적인 자료구조입니다. 그래프는 노드(Node)와 간선(Edge)로 이루어져 있습니다. 노드는 그래프에서 하나의 객체를 나타내며, ..
· Back-end
# JAVA란 자바는 썬 마이크로시스템즈에서 개발한 객체 지향적 프로그래밍 언어이다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발되었지만 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나이고, 안드로이드를 비롯한 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다. 자바의 개발자들은 유닉스 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 C 언어와 비슷하다. 자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 ..
jvm 동작 방식 (gc 등) build 관리 도구 동작 방식
# 자료구조란 데이터는 분석하고 정리하여 활용해야한 의미를 가지며 사용목적에 따라 형태를 구분하고 분류하는 것이 좋다. 그렇기 때문에 저장공간에 있는 data를 효율적으로 [읽기, 쓰기, 삽입, 삭제, 탐색] 하기 위해서 여러 데이터들의 묶음을 저장하고 사용하는 방법을 정의한 것이다. # 알고리즘 시간복잡도 알고리즘이란? - input을 output으로 전달하는 잘 정리된 절차, 문제를 해결하는 잘 정의된 절차 가상 컴퓨터 + 가상 언어 + 가상 코드 RAM model = CPU + memory + 기본 연산 (단위시간에 수행되는 연산) 기본연산 - 배정, 대입, 복사, 산술 연산, 비교 연산, 논리 연산, 비트 연산 알고리즘의 수행 시간 = 최악의 경우의 입력에 대한 기본 연산 횟수 # 표기법 big-..
whitem4rk
high-end back-end