특정 구간의 코드 실행 시간을 알고 싶은 경우가 있다. 대부분 개발 중 어느 부분이 느린지 알아내야하는.. 경우다. 이 때 사용할 수 있는 Java 함수 하나 알아보자. Java에서 특정 구간의 코드 실행 시간이 얼마나 소요되는지 알고 싶을 때는 System.currentTimeMillis() 함수를 사용하면 된다. 이 함수는 현재 시간을 받아오는 System 함수로, 실행 시간을 측정하고 싶은 코드의 시작 구간과 종료 구간에 각각 해당 함수를 사용해 시간을 받아오고, 두 시간 사이의 차이를 계산하면 된다. 함수명에서 알 수 있듯이 ms 단위의 시간 차를 결과값으로 얻을 수 있다. 만약 값을 초(s) 단위로 변환하고 싶다면 System.currentTimeMillis()/1000 을 사용하면 되고, 초(..
전체 글
백엔드 개발자 토발자입니다.
알고리즘에 대해 정리하기에 앞서 Big-O 표기법에 대해 먼저 정리해보고자 한다. Big-O 표기법이란? 알고리즘에서 사용되는 Big-O 표기법은 알고리즘의 성능을 분석하고 비교하기 위해 사용되는 표기법으로 알고리즘의 시간 복잡도(실행 시간) 또는 공간 복잡도를 나타내는데 사용된다. Big-O 표기법은 주어진 입력 크기에 대한 알고리즘의 실행 시간 또는 공간 요구 사항을 표현한다. Big-O는 "O"라는 기호와 함께 표기되며, O 다음에는 함수가 나온다. 이 함수는 주어진 입력 크기에 대한 알고리즘의 실행 시간 또는 공간 복잡도를 나타낸다. Big-O 표기법에서는 주로 최악의 경우 시간 복잡도를 나타낸다. 즉, 입력 크기에 따라 알고리즘의 실행 시간이 어떻게 증가하는지, 그 중 '아무리 많이 걸려도 최대..
자료구조 중 해시 테이블(Hash Table)에 대해 알아보자. 해시 테이블(Hash Table)이란? 해시 테이블(Hash Table)은 효율적인 검색과 삽입 연산을 위해 설계된 자료구조다. 이는 키-값 쌍의 데이터를 저장하는데 사용되며, 각 키는 해시 함수를 통해 고유한 인덱스로 변환되어 배열 내에 저장된다. 기본 개념에 대해 살펴보면 다음과 같다. 해시 함수 : 해시 함수는 키를 해시 값으로 변환하는 함수다. 이 해시 값은 고유한 인덱스로 사용된다. 해시 충돌 : 서로 다른 키가 같은 해시 값을 가질 경우 해시 충돌이 발생한다. 이는 해시 함수가 충돌을 완전히 피하는 것이 불가능하기 때문에 주의해야 한다. 해시 테이블 : 해시 테이블은 배열로 구성되어 있으며, 각 배열 요소는 버킷 또는 슬롯이라고 ..

자료구조 중 트리(Tree)에 대해 정리해보자. 트리(Tree)란? 트리(Tree)는 계층적인 구조를 나타내는 비선형 자료구조로 그래프(Graph)의 특수한 형태이다. 트리는 노드(Node)와 간선(Edge)으로 이루어져 있다. 간단히 말해 트리는 하나의 루트 노드를 가지고 있으며, 각 노드는 0개 이상의 자식 노드를 가질 수 있다. 이러한 구조로 인해 데이터를 계층적으로 표현할 수 있다. 트리의 주요 개념과 용어는 다음과 같다. 노드(Node) : 트리의 기본 단위로 데이터를 저장하는 요소다. 각 노드는 부모 노드와 하위 노드(자식 노드)를 가질 수 있다. 루트(Root) : 트리의 맨 위에 있는 노드로 다른 모든 노드는 루트를 향해 이어진 경로를 가지고 있다. 트리는 하나의 루트 노드만을 가진다. 부..

그래프(Graph)란? 그래프(Graph)는 객체 또는 개체 간의 관계를 표현하는 자료구조다. 그래프는 노드(Node)와 노드 사이를 연결하는 간선(Edge)으로 구성된다. 노드(정점, Vertex) : 일반적으로 개별적인 개체나 개념 간선 : 노드 사이의 관계 그래프는 현실 세계의 다양한 상황을 모델링하고 문제를 해결하는 데에 사용된다. 그래프 구현 방법 그래프는 여러 형태로 구현될 수 있다. 주요한 구현 방법에는 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List)가 있다. 두 가지 구현 방법 중 대부분 인접 리스트 방식을 많이 사용한다. 각각의 구현 방법에 대한 장단점을 알아보면 다음과 같다. 인접 행렬(Adjacency Matrix) 2차원 배열을 사용해 그래프를 ..