Entity 모델링에 VO(value object)를 활용하기 최근 진행하고 있는 Entry3.0 프로젝트에서 ged_grade(검정고시 졸업자 점수)테이블의 grade 컬럼을 unsigned double로 만들었다. 점수를 음수로 저장하는 몽총이는 없으니까 난 스마트하니까~ ~ 이 테이블을 엔티티로 매핑하려는데 unsigned에 대한 처리는 자바에서 기본적으로 제공하는 기능(문법?)으론 불가능했다. 자바에는 unsigned가 없기 때문이다. 무언가 다른 방법이 필요했다. 그래서 VO를 활용하기로 했다. 먼저 UnsignedDouble이라는 Double을 래핑한 VO를 만들고 @Embeddable을 붙여 Entity에 임베딩할 수 있도록 했다. **기본 생성자(Default Constructor)가 필요..
클래스와 객체는 붕어빵 틀과 붕어빵이 아니다. 처음 객체지향 프로그래밍을 접하는 사람들은 이런 말을 한 번 쯤 듣는다. 아마 안들어본 사람이 없을 것 같다. 붕어빵 틀에서 붕어빵을 찍어내지? 그러니까 붕어빵 틀은 클래스가 되는 거고 붕어빵은 객체가 되는거야. 이 new라는 연산자를 사용해서 붕어빵 틀에서 붕어빵을 찍어낼 수 있어 나도 객체 지향을 처음 접할 때 위의 설명을 들었고, 잘못된 개념으로 객체 지향을 이해하고 있다가 약 5분 전 김종민님이 쓰신 스프링 입문을 위한 자바 객체 지향의 원리와 이해라는 책의 극초반 내용에서 깨달음을 얻었다.(정말 좋은 책이니 다들 읽어보았으면 좋겠다.) 붕어빵 틀과 붕어빵은 결코 클래스와 객체 관계가 될 수 없다. 왜? 코드로 보면 이해가 한결 쉬워진다. 다음 코드를..
힙 정렬(HeapSort) 힙이란? http://devheat.tistory.com/12 참고 설명 힙의 최상위 노드에는 가장 큰 값이 존재한다는 특성을 이용해 정렬하는 알고리즘 최대 힙 혹은 최소 힙의 노드 삭제를 연속으로 수행해 값이 가장 큰 노드부터 내림차순 혹은 오름차순으로 꺼낼 수 있다. 구현 구현은 이전 포스팅 http://devheat.tistory.com/12 에서 만든 delete 메소드를 연달아 호출하면 된다. 최상위 노드를 꺼내고, 최하위 노드를 최상위에 위치시켜 다시 하향 heapify를 수행하는 것이 핵심 소스코드 번외 이전 포스트와 마찬가지로 Generic Heap에도 정렬 기능을 추가할 수 있다. 구현 힙 사용 예제 (Comparable을 구현한 String 클래스를 사용)
힙(Heap) 힙(heap)은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(Complete binary tree)를 기본으로 한 자료구조 위키피디아 - 힙(자료구조) 완전이진트리? 마지막 두 레벨을 제외한 모든 노드의 차수가 2이며, 마지막 레벨의 노드가 왼쪽에 몰려있는 이진 트리 힙의 특징 최소 힙과 최대 힙 힙은 최소 힙과 최대 힙으로 나뉜다. 비교 최소 힙 최대 힙 조건 자식 노드의 값이 부모보다 커야한다. 부모의 값이 자식 노드의 값보다 커야한다. 힙의 원리 힙은 리스트(배열)로 표현될 수 있으며 각 노드의 인덱스가 index라면 왼 쪽 자식 노드의 인덱스는 index * 2 + 1, 오른 쪽 자식 노드의 인덱스는 index * 2 + 2이다. 힙은 새로운 노드를 추가..
본 글은 현재는 사용하지 않는 https://nooheat.github.io에서 2017년 11월 13일에 게시된 글을 옮겨온 글입니다. 지난 11월 6일 드디어 전공 프로젝트 수행평가가 마무리되었다. 각 조의 결과물을 1학년 공통과정 학생들과 2학년 소프트웨어개발과 학생들, 그리고 교직원 선생님분들의 앞에서 발표할 기회가 생겼었다. 간만에 올리는 글이라 어색하지만 그동안 프로젝트를 진행하면서 느낀점들, 그리고 결과물에 대해 적어놓고 싶어 vscode를 켰다. SignMe프로젝트? 가정통신문 온라인 배부/수합 서비스로서 기존의 복잡했던 가정통신문 배부/수합 과정을 개선시키는 것을 목적으로 한 프로젝트이다. 1. 문제 인식 1-1. 현재의 가정통신문 배부/수합 플로우 가정통신문 배부 가정통신문 응답 분실시..
선택 정렬(Selection Sort) 설명 오름 차순 기준 가장 작은 수의 인덱스를 찾아 현재 위치 인덱스의 값과 Swap한다. 한 사이클당 교환이 1회 이루어지므로 버블 정렬 보단 효율적이다. 동작 동작 예시 정수형 배열이 [5, 3, 2, 4, 1] 5개의 원소를 가질 때 오름차순 정렬 선형 탐색으로 가장 작은 값의 인덱스를 찾음 (인덱스 0 이상에서) 결과: 4 배열의 0번지의 값과 Swap [1, 3, 2, 4, 5] 선형 탐색으로 가장 작은 값의 인덱스를 찾음 (인덱스 1 이상에서) 결과: 2 배열의 1번지의 값과 Swap [1, 2, 3, 4, 5] 선형 탐색으로 가장 작은 값의 인덱스를 찾음 (인덱스 2 이상에서) 결과: 2 배열의 2번지의 값과 Swap [1, 2, 3, 4, 5] // ..
삽입 정렬(Insertion Sort) 설명 오름차순의 경우 K번째 원소를 이전 원소와 비교하며 이전 원소가 K번째 원소보다 작을 때 까지 이전 원소를 다음 인덱스의 값으로 이동시킨다. 그 후 그 자리에 K번째 원소를 끼워 넣는다. 동작 동작 예시 정수형 배열이 [5, 3, 2, 4, 1] 5개의 원소를 가질 때 오름차순 정렬 인덱스는 1부터 시작 (이전 원소와 비교해야 하는데 0은 이전 원소가 없다.) 3과 5 비교, 밀어내기 O [5, 5, 2, 4, 1] 3을 0번지에 끼워 넣음 [3, 5, 2, 4, 1] 2와 5 비교, 밀어내기 O [3, 5, 5, 4, 1] 2와 3 비교, 밀어내기 O [3, 3, 5, 4, 1] 2를 0번지에 끼워 넣음 [2, 3, 5, 4, 1] 이를 반복 시간 복잡도 O..
정렬의 기초, 버블 정렬(Bubble Sort) 설명 가장 직관적이고 대부분의 경우 가장 비효율적인 정렬 알고리즘 따라서 거의 쓰이지 않는다. 동작 구현에 따라 달라지지만 통상 가장 오른 원소부터 차례대로 자리를 찾아가게됨 자신과 자신의 다음 원소를 비교하고, Swap 여부를 결정 동작 예시 정수형 배열이 [1, 2, 4, 2, 5, 7, 1, 3, 9, 8] 10개의 원소를 가졌을 때 오름차순 정렬 시작: [1, 2, 4, 2, 5, 7, 1, 3, 9, 8] 1과 2 비교, Swap X [1, 2, 4, 2, 5, 7, 1, 3, 9, 8] 2와 4 비교, Swap X [1, 2, 4, 2, 5, 7, 1, 3, 9, 8] 4와 2 비교, Swap O [1, 2, 2, 4, 5, 7, 1, 3, 9,..
백준 온라인 저지 2108번 통계학 문제 문제 설명 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최대값과 최소값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절대값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을..
백준 1181번 단어 정렬 문제 내용 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 해결 방법 Java8에 추가된 stream을 활용하면 간단하게 해결할 수 있다. 소스코드(38640 KB916 MS) 타인의 소스코드 (syntaxtree님, 39796 KB132 MS) 읽히는건 내 소..
- Total
- Today
- Yesterday
- 붕어빵틀과 붕어빵
- 백준
- 알고리즘
- Sign Me
- 스택
- 자료구조
- @Embeddable
- 스택 계산기
- 우아한테크캠프
- 백준 온라인 저지
- 전공프로젝트
- uni direction
- @Embdded
- Java 스택 계산기
- Java Heap
- 정렬
- 소프트웨어개발과
- 자료구조 Heap
- signme
- 붕어빵틀과붕어빵
- JPA 관계
- 우테캠
- 정렬 알고리즘
- 자바 힙 구현
- 양방향 연결
- Entity에 VO
- bi direction
- 단방향 연결
- 자료구조 힙
- 클래스와 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |