일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- querydsl
- JPA공부
- 플러터 공부
- 스프링부트
- 코테준비
- nestjs
- 스프링부트공부
- 프로그래머스
- 기술면접공부
- Flutter
- JPA
- 알고리즘공부
- Axon framework
- DDD
- JPA스터디
- 스프링 공부
- K8S
- 기술공부
- 자바공부
- 카프카
- Kafka
- 스프링공부
- nestjs공부
- 코테공부
- nestjs스터디
- JPA 공부
- 스프링
- 자료구조공부
- JPA예제
- 플러터 개발
- Today
- Total
목록자료구조공부 (7)
DevBoi
링크드 리스트란, 객체 (흔히 노드라고 표현한다) 현재 자신의 데이터와 다음 노드를 가지고 있는 리스트이다. 처음에 시작점을 알아야 쭉 탐색이 가능하며, 중간에 수정이 들어갈때 불편하고, 탐색을 하려면 처음 head로 시작해서 재귀로, 탐색을 이어 나가야 한다. 쉽게 구현해보면 아래와 같다. 이렇게 재귀를 통해서, 해당 노드에 대한 탐색을 할수있다. 노드는 이렇게 제네릭 타입으로 선언해서, 사용할수 있다. 그러면, 추가와 전체 노드 프린트하는 함수도 구해보자 전체적인 구조를 바꿔야 한다. 전체 링크드 리스트라는 구조 속에 노드들을 넣어야 하기 때문에, class 안에 class를 넣어야 한다. 우선 add함수를 구현해봤다. 제네릭 타입으로 변경했기 때문에, 해당 제네릭 타입으로 add를 했을 경우를 가정..
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..
쉽게 쓰는, 그리고 많이 접하는 구조.........트리 트리는 알고리즘 테스트에서도 많이 출제하고, 해당 구현, 개념을 알고있는 것이 굉장히 좋다 그러면 트리와 이진트리 , binary tree에 대해서 알아보자 1. 트리 트리는 쉽게 노드,경로 등으로 이루어져 있으며, 해당 트리는 아래와 같은특징을가진다. - 모든 노드들은 연결되어있다. - 노드들에 대한 회신 cycle이 존재하지 않는다. - 임의의 노드에서 다른 노드로 이동하는 경로는 유일하다. 2. 이진 트리 - 자식 노드가 최대 두개로 이루어진 트리이다. 모든 노드는, 공백이나 왼쪽 혹은 오른쪽의 서브노드를 가지고있다. 그러면 2개 이상을 가지는 트리는 어떻게 명명 할까? 바로, b-tree라고 한다. 일단, 이렇게 한가지의 노드에 키값이 있고..
1. 선택정렬 전체 탐색으로 해서, 조건에 맞는 값을 찾으면, temp라는 변수를 사용해서, 2개를 swap 해가면서 탐색 및 정렬해가는 것이다. 쉽게, 간단한 배열을 선택 정렬로 구현한 예제이다. 2. 삽입 정렬 배열이나, 리스트의 끝원소부터, 차례로 작거나 큰값을 비교해 가면서 swap하는 방식 선택 정렬과 비슷하나, 점차 레인지를 줄여나가면서 하나씩 차례로 한다는 점에서 다르다. 3.퀵 정렬 기준 데이터를 설정하고, 기준보다 큰 데이터, 작은데이터의 위치를 바꾸는 것 가장 기본적인 퀵정렬은 첫번째 데이터를 기준 데이터 로 설정한다. (Pivot) * pivot 값을 기준으로,-> 방향으로 탐색 해서, 큰값 와 탐색은 4,
얼마전에 Stream 객체를 다룰일이 있었다. 조금 낯설었다. Stream 객체? 이걸굳이 왜쓰지? 라고 예전에 보고 어설프게 공부해서, 약간 당황쓰 그래서 조금 제대로 공부해보려고한다. 1. Stream 객체, api라고도 하는데 우선 사용하면 좋은점 우선 장점은, 한가지의 방식으로 함수형으로 몰아서 코딩을 작성할수있다. 이게 무슨 소리냐 다른건 예를 들어서, 배열에서 List로 변경하려면 원본의 데이터를 편집하고 붙여서 변형을 해야한다. 즉, 자체적으로 변형해주는, 데이터를 직접 건들여서 손봐야한다. 하지만, Stream 객체를 사용하게되면 간단하게 함수하나로, 바로사용해서변형할수있다. String 배열 이다. 이걸 List에 담으려면 어떻게 해야할까? 이런식으로 데이터의 변형을 가해, add를 해줘..
그리디는, 가장 최적의 해를 찾는 알고리즘이다. 우선 가장 쉬운 예제로 한번 테스트해보자 특정 금액 1260 원을 받았을때, 동전 거스름돈의 최소 개수를 구하는 로직이다. 그리드 관련 알고리즘은, 가장 큰 범위의 탐색 및 로직을 먹이는 것이다. 그다음 그리드 문제 처음에, %4가 0 일떄를 체크해서, 가장 나누기를 우선적으로 수행하면 된다. 해당 완전탐색으로, 풀어버리면된다. 저런문제가 나오면 완전탐색을 하라고 하는거니까.. 그냥 완전 탐색하면된다. import java.util.*; import java.lang.*; class main2 { public static void main(String[] args) { //스캐너 Scanner sc = new Scanner(System.in); //시간 입..
자료구조에 대한 걸 공부해야겠다는 필요성을 느꼈다. 왜냐하면, 너무 쓰던 자료구조만 쓴다. 예를 들면, ArrayList 말고 다른 자료구조를 쓰면, 더 효율적인데, ArrayList나 Map같이 그냥 쓰던것만 쓰거나.....등등 무튼 그래서, 하루에 한가지 자료구조를 파야겠다고 생각했고, 오늘이 그 첫번째, HashSet이다. 우선 선언 및 기본 print 간단하게, Hashset에 A라는걸 add하고,print 한다. add방식은 arrayList와 동일하다, index 로 탐색해야하는 것도 같다. 다만, 다른점은 !! 중복에 대한 자동 체크를 해준다는 것이다. 바로 이해되는 예제를 구현해봤다. add로 A를 두번 add해도 자동으로, A는 한번밖에 담기지 않는다. 찾아보니 hashset은 다음과 같..