이카's
반응형
article thumbnail
자료구조 - 힙(Java 구현)
카테고리 없음 2023. 6. 22. 09:42

힙 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)이다. 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 즉, 힙을 이해하기 위해서는 트리에 대한 사전 지식이 필요하다. 힙은 왜 사용할까? 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n) 이 걸림, 이에 반해, 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, $ O(log n) $ 이 걸림, 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨 힙 구조 힙은 최대값을 구하기 위한 구조 (최대 힙, Max Heap) 와, 최소값을 구하기 위한 구조 (최소 힙, Min Heap)로 분류할 수 있다. 즉, 힙은 ..

article thumbnail
시간복잡도를 자바로 구현
SW/자료구조 2023. 6. 15. 01:11

시간복잡도 시간복잡도는 알고리즘, 자료구조를 공부하게되면 접하게되면 단어이다. 그렇다면 시간복잡도는 무엇인가? 쉽게 말해 지금 내 코드의 실행 시간을 Big O (빅-오) 표기법: O(N) 표기법으로 표현을 한 것이다. 시간 복잡도 계산은 반복문이 핵심 요소임을 인지하고, 계산 표기는 최상, 평균, 최악 중, 최악의 시간인 Big-O 표기법을 중심으로 공부하면 된다. 대문자 O 표기법 및 게산 방법 입력 n 에 따라 결정되는 시간 복잡도 함수 O(1), O($log n$), O(n), O(n $log n$), O($n^2$), O($2^n$), O(n!)등으로 표기함 입력 n 의 크기에 따라 기하급수적으로 시간 복잡도가 늘어날 수 있다. O(1) < O($log n$) < O(n) < O(n $log n..

article thumbnail
진화를 거듭한 자바, 스프링, 스프링부트
BE/Spring-Boot 2023. 6. 7. 14:07

자바, 스프링, 스프링 부트 자바에 봄이 왔다..! 어떻게 봄을 오게 했는지, 대단한 프레임워크라고 말할 수 있다. 앞으로 계획 커리큘럼은 스프링 부트이다. 이 차이를 분명히 알아야 개념이 흔들리지 않고, 확실히 공부 할 수 있어서 살짝 집고 넘어가려고 한다. Java 스프링, 스프링 부트에 근간이 되는 언어이다. 커피를 두고 비유하자면 원두 정도가 되는 셈이다. 원두만으로는 뭘 하기는 힘든데, 이걸 가공하여 우리가 먹을 수 있게 만든다면 커피가 되는 것이다. Spring 자바 - 스프링 이렇게 묶어서 러프하게 말한다. 하지만 스프링은 카페라고 생각하면 쉽다. 원두로 만든거긴 하지만, 원두(자바)는 아니다. 즉, 부가적인 어떤 것이 첨가되어 만들어 진 것이다. 스프링은 대부분 자바로 만들어져 있다. 하지..

article thumbnail
프로그래밍 패러다임 - Java, JavaScript
Language/Java 2023. 6. 7. 00:28

프로그래밍 패러다임 paradigm 사전에 정의 되어있는 것만 봐도 이해하기 힘든 단어이다. 이걸 어떻게 하면 쉽게 소개를 할까? 고민을 하다가 한 문장이 마음에 갔다. 프로그래머에게 프로그래밍의 관점을 갖게 해주는 사실 이 한 문장에 다 포함되어 있는 것 같다. 앞으로의 내용은 이 문장을 바탕으로 설명 해보려고 한다. 패러다임은 아래와 같이 있다. 절차적 프로그래밍 (PP, Procedure Programming) 객체지향 프로그래밍 (OOP, Object Oriented Programming) 함수형 프로그래밍 (FP, Functional Programming) 이것 뿐만이 아니라 많은 프로그래밍 패러다임이 있지만, 이 3가지만 다루고자 한다. 함수형 프로그래밍(FP) & 선언형 프로그래밍(IP) 선..

article thumbnail
특이점이 온 개발자의 생각 정리
개인공간 2023. 6. 2. 16:42

개발의 특이점 개발 공부를 하고 있는 현재 내 상태는 뭔가 개발이란 이런거구나 라는 결이 보이기 시작했으면서도 아직 어렵고, 뭐 그런 느낌이다. 그래도 어떤 고점으로 올라가기 시작한 느낌도 들기 시작하고, 참 애매한 느낌이다. 이쯤에서 리마인드를 하기 위해서, 내 생각을 정리하고 목표 설정을 위해 포스팅을 한다. 1. 개발 공부 어디까지 해봤어? 지금 Java를 한번 훑었다고 생각한다. 하지만 현재는 개념을 30%정도 알고 있다고 생각한다. 즉, 애매하게 알고 있다는 것이다. 이를 해결하고자 Java를 1회독 더 할 생각이다. 이번 회독은 빠르게 가능 할 듯하다. 또한 조금 더 깊게 공부가 가능할 것이고, 목표는 70%정도 까지 이해하는 것에 의의를 둔다. 목표 기간은 6월 한 달간이다. 이후로는 스프링..

article thumbnail
자료구조 - 배열 (feat. Java, Python), 자매품 - Java Collection ArrayList
SW/자료구조 2023. 6. 1. 02:30

배열이란? 배열을 왜 쓸까? 같은 종류의 데이터를 관리하기 하기 위해서 같은 종류의 데이터를 순차적으로 저장 대전제는 데이터를 쉽게 관리하는 목적이다. 그것을 한 묶음으로 관리하는게 효율적이다. 근데 이걸 또 순차적으로 있다면? 한눈에 봐도 데이터를 다루기가 쉬울 것이다. 장점 - Index 배열의 가장 큰 장점은 Index라고 할 수 있다. 배열는 공간에 각각의 element 마다 각각의 index가 생긴다. (각각각각) 각 요소에 번호가 생기면 데이터 안에 하나의 값만 가져올 때 굉장히 편해진다. 또한 값을 찾을 때 소모되는 비용은 index로 인해 시간복잡도 O(1)을 가진다. 단점 - 배열의 크기설정 & 추가/삭제 배열의 가장 큰 단점 데이터를 삭제와 추가 하는 부분에서 발생한다. 배열은 크기를 ..

반응형