[목표]- 웹페이지에서 가장 대표적으로 사용되는 핵심 기능을 구현해보기 [기간]- 2016. 07. 12 ~ 2016. 10. 14- 2016. 08. 23(1차 종료): Spring 버전으로 변경 및 분량 조절 회의로 결정 [로드맵] [주요 시스템]- 회원(로그인, 회원가입) - 게시판(자료 업/다운로드 포함) - 달력+예약 시스템 ※ 예) 펜션 실시간 예약 - 쇼핑-장바구니, 후기(평가) ※ 자세한 내용은 Trello에 기록 [관리 도구]- 일정 및 개발 계획: Trello- 버전 관리: Git [규칙]1. 스터디 회의- 매주 '월, 금요일' 수업이 종료된 이후 스터디 회의 진행 - 회의 내용은 각자 진행상황을 공유 2. 일정- 각 항목에 대한 구현 기간은 각자 일정을 계획 - 단, 기한(deadli..
첫째, 매 순간에 최선을 다하고, 끊임없이 변화하고 발전하기 위해서 노력한다. 둘째, 높은 목표를 세우고 스스로를 채찍질한다. 셋째, 결과도 중요하지만 과정을 더 중요하게 생각한다. 넷째, 스스로를 다른 사람과 비교하지 않으며, 외부 평가에 연연하지 않는다. 다섯째, 항상 자신이 모자란다고 생각하며, 조그만 성공에 만족하지 않으며, 방심을 경계한다. 여섯째, 기본을 중요하게 생각한다. 일곱째, 천 마디 말보다 하나의 행동을 더 값지게 생각한다. ◈ [출처] 책: HTML & CSS 웹사이트 개발과 디자인 기초, 존 두켓(홍영표 옮김) ※ 옮긴이가 작성
1. 컴퓨터 과학 소스 코드와 버전 컨트롤 Level 0 날짜 별로 폴더 백업. Level 1 VSS와 CVS/SVN을 시작하는 유저. Level 2 CVS와 SVN의 사용에 능숙하다. branch와 merge 등의 사용법에 대해서 안다. Level 3 분산 VCS 시스템에 대해서 안다. Bzr/머큐리얼/Darcs/Git를 해보았다. 빌드 자동화 Level 0 IDE에서 빌드하는 법 밖에 모른다. Level 1 커맨드 창에서 빌드하는 법을 안다. Level 2 간단한 시스템을 빌드하는 스크립트를 만들 수 있다. Level 3 시스템과 문서, 설치 파일, 릴리즈 문서와 소스 컨트롤의 코드 태그등을 만드는 스크립트를 만들 수 있다. 테스트 자동화 Level 0 테스트는 테스터가 해야 할 일이라고만 생각한다...
[주제]- 최소 비용 신장 트리의 개념 [정의]- 트리도 그래프의 한 유형- 경로: 두 개의 정점을 잇는 간선을 순서대로 나열한 것 ■ 그림(그래프의 사이클) - 정점 'B에서 D'에 이르는 경로의 경우의 수▷ B - A - D▷ B - C - D▷ B - A - C - D▷ B - C - A - D - 위 경로는 '단순 경로'에 속함 ※ 동일한 간선을 중복하여 포함하지 않는 경로 - 아래 경로는 단순 경로가 아닌 경우의 예▷ B - A - C - B - A - D - 오른쪽 그림의 경우 시작지점과 종료지점이 같은 경로를 '사이클'이라 함 - 사이클을 형성하지 않는 그래프의 예 - 사이클을 형성하지 않는 그래프는 회전할 시 트리와 같은 모양새를 갖춤- 그래서 이런 그래프를 '산장 트리(Spanning T..
[주제]- 그래프의 탐색 종류와 구현 모델 [정의] 1. 깊이 우선 탐색(Depth First Search, DFS)- DFS 알고리즘은 어떠한 선택을 하건 잘 동작하며, 누구를 우선 선택할 것인지에 대한 기준은 개발자가 결정해도 되는 단순한 문제 ★ 핵심 3가지- 한 사람에게만 연락하면 됨- 연락할 사람이 없으면, 자신에게 연락한 사람에게 이를 알림- 처음 연락을 시작한 사람의 위치에서 연락은 끝이 남 ■ 그림(깊이 우선 탐색의 과정) - '나나'로부터 연락을 시작한다고 가정 - 나나는 '만수' 또는 '포포'에게 연락이 가능한데 여기서는 '포포'를 선택- 포포는 연결되어 있는 '길동'에게 연락- 길동은 '만수' 또는 '김민' 또는 '철수'에게 연락이 가능한데 여기서는 '철수'를 선택- 최종적으로 '김민..
[주제]- 그래프의 개념과 종류- 구현 모델 [정의]- 정점(Vertex) 사이에 간선(Edge)이 연결된 형태의 자료구조- 정점: 연결의 대상이 되는 개체 또는 위치- 간선: 정점 사이를 연결하는 선 ■ 그림(기본 그래프의 종류) ※ 연락을 돌리는 컨셉을 기준으로 설명 - 무방향 그래프(Undirected Graph): 연결 관계에 있어서 방향성이 없는 그래프- 연락의 시작이 '만수'일 경우 만수는 '나나', '길동'에게 연락할 수 있음- 나나는 '포포'에게 연락할 수 있음- 길동은 '포포', '김민', '철수'에게 연락할 수 있음- 중간에 연락이 끊겨서 다수의 사람이 연락을 받지 못할 확률이 매우 낮음 - 방향 그래프(Directed Graph): 간선에 방향정보가 포함된 그래프. 또는 다이그래프(D..
[주제]- 해쉬 테이블의 개념 [정의] 사원 번호(Key)직원(Data)00150홍길동01320고길동00099아무개 - 표(Table) 형태의 자료구조- 저장되는 데이터가 키(Key) 값과 데이터 값이 하나의 쌍으로 구성됨- 키 값이 없으면 데이터를 저장할 수 없으며, 키 값을 중복될 수 없음 ■ 그림(해쉬 함수) - 일정한 규칙으로 작성된 중복되지 않는 고유 값을 함수를 통해 쉽게 구분할 수 있는 값으로 변경 ※ 해쉬함수(Hash Function): 넓은 범위의 값을 좁은 범위의 값으로 변경하는 역할 - 하지만 해쉬함수가 단순한 산술 연산으로만 되어있으면 값이 중복되어버리는 충돌 현상이 발생됨 - 위 그림은 테이블의 메모리 상황을 표현- 칠해진 영역이 데이터가 저장된 슬롯- 데이터가 저장되는 위치가 골..
[주제]- 균형 잡힌 이진 탐색 트리인 AVL 트리의 개념 [정의]- 이진 탐색 트리는 '저장 순서에 따라 탐색의 성능 차이가 커지는 단점'이 존재- 위 단점을 해결한 트리를 가리켜 '균형 잡힌 이진 트리'라고 함- 종류(AVL 트리, 2-3 트리, 2-3-4 트리, Red-Black 트리, B 트리)- 'G. M. Adelson-Velskii와 E. M. Landis'에 의해 고안되었으며, 이름의 앞글자를 따서 AVL 트리라고 함 ■ 그림(균형 잡힌 이진 탐색 트리 예시) ■ 그림(균형 인수) - 균형 인수: 균형의 정도를 표현하는 단위- 균형 인수의 절대값이 크면 클수록 그만큼 트리의 균형이 무너진 상태 ※ 균형 인수 값 = 왼쪽 서브 트리의 높이 - 오른쪽 서브 트리의 높이 - AVL 트리는 균형 ..
[주제]- 이진 탐색 트리의 개념 [정의]- 이진 탐색 트리에는 데이터를 저장하는 규칙이 있음. 그 규칙은 특정 데이터의 위치를 찾는데 사용됨- 이진 트리 + 데이터의 저장 규칙 = 이진 탐색 트리 [중요]- 이진 탐색 트리의 노드에 저장된 키(Key)는 유일- 루트 노드의 키는 왼쪽 서브 트리를 구성하는 어떠한 노드의 키보다 크며, 오른쪽 서브 트리를 구성하는 어떠한 노드의 키보다 작음- 왼쪽 자식 노드의 키 < 부모 노드의 키 < 오른쪽 자식 노드의 키- 왼쪽/오른쪽 서브 트리도 이진 탐색 트리- 삽입 과정과 탐색 과정은 동일하게 진행 ※ 키는 정수 값으로 설정했다는 가정 ■ 그림(이진 탐색 트리) ■ 그림(이진 탐색 트리의 데이터 삽입 과정) - 비교대상이 없을 때까지 내려감- 비교대상이 없는 때 ..
[주제]- 보간 탐색의 개념 [정의]- 이진 탐색의 비효율성을 개선시킨 알고리즘 [중요]- 효율적인 탐색을 위해서는 '어떻게 찾을까'가 아닌, 효율적인 탐색을 위한 '저장방법'이 무엇인지를 우선 고민해야 함- 탐색 대상이 앞쪽에 위치해 있으면 앞쪽에서 탐색을 시작 ※ 예) 고길동이라는 사람의 전화번호를 찾을 때, 전화번호부의 인덱스를 보고 'ㄱ'에 해당하는 앞쪽에서 찾기 ■ 그림(보간 탐색) - 보간 탐색은 찾아야 하는 값이 상대적으로 앞에 위치한다고 판단하면 앞쪽에 탐색 - low: 탐색 대상의 '시작' 인덱스 값- high: 탐색 대상의 '끝' 인덱스 값- S: 찾는 데이터가 저장된 위치의 인덱스 값- 보간 탐색은 데이터의 값과 그 데이터가 저장된 위치의 인덱스 값이 비례한다고 가정 ■ 1차 공식 A..
[주제]- 기수 정렬에 대한 개념 [정의]- 기수(Radix)란 '주어진 데이터를 구성하는 기본 요소'를 말함 ※ 예) 2진수의 기수: 0, 1, 10진수의 기수: 0 ~ 9 1. LSD(Least Significant Digit) 방식의 정렬- '가장 작은 자릿수'부터 정렬을 진행 ※ 가장 오른쪽부터(숫자로 치면 1의 자리수부터) - 가장 작은 자릿수부터 가장 큰 자릿수까지 비교해야 된다는 단점이 존재하지만, 코드 구현은 MSD에 비해 간결 2. MSD(Most Significant Digit) 방식의 정렬- '가장 큰 자릿수'부터 정렬을 진행 ※ 가장 왼쪽부터 - 코드 구현은 LSD에 비해 추가 작업(정렬 상태 확인)이 필요하지만, 중간에 정렬이 완료될 수 있는 장점이 존재 [중요]- 기수 정렬은 정..
[주제]- 퀵 정렬에 대한 개념과 구현 [중요]- 피벗의 시작 위치는 '맨 왼쪽 or 중간 or 맨 오른쪽'이 될 수 있음- 좀 더 효율적이기 위해 처음:중간:마지막 숫자끼리 비교해서 중간 값을 피벗으로 설정하는 것이 효율적임 또는, 맨 왼쪽(오른쪽) 3개 숫자를 비교- 피벗을 중심으로 영역을 두 개로 분할하여 정렬 ※ 재귀 ■ 그림(퀵 정렬 과정)- 숫자 '5, 7, 4, 2, 1, 8, 3, 6'을 오름차순으로 정렬 - 맨 왼쪽 숫자를 피벗으로 결정- 비교 숫자(low)는 피벗 숫자의 오른쪽부터 시작 - 'low'는 해당 위치의 숫자가 피벗 위치의 숫자보다 높을 때까지 오른쪽으로 이동- 'high'는 해당 위치의 숫자가 피벗 위치의 숫자보다 낮을 때까지 왼쪽으로 이동 ※ 'low'의 이동이 끝나야 '..
[주제]- 기존에 구현한 블랙잭 게임을 업그레이드하기 [수정된 내용]- 각 기능별 클래스로 분할- 계정, 로그인 기능 추가- 베팅 기능 추가- 계정 정보(ID, 칩 개수)를 파일로 저장, 게임 시작 시 불러오기 [소스]■ gamePlay.javapackage blackjackGame; import java.util.ArrayList;import java.util.Scanner; public class gamePlay { private int minBetChip; private int maxBetChip; public gamePlay() {} ///// 게임 반복 루프 public gamePlay(ArrayList arrlist, String playID[]) { Scanner sc = new Scanne..
[주제]- 병합 정렬에 대한 개념과 구현 [중요]- 정렬의 과정 => 1단계: 복합(Divide) → 2단계: 정복(Conquer) → 3단계: 결합(Combine)- 정렬할 배열을 중간을 기준으로 2개로 나눠서 따로 정렬- 1:1로 비교될 때까지 분할- 다시 거꾸로 숫자를 비교해가면서 정렬 ※ 재귀 ■ 그림(병합 정렬 과정)- 숫자 '5, 7, 4, 2, 1, 8, 3, 6'을 오름차순으로 정렬 [소스]■ Merge.javapackage sortMerge; public class Merge { public Merge() {} ///// 분할된 숫자들을 병합 public void MergeTwoArea(int arr[], int left, int mid, int right) { int fIdx = lef..
[주제]- 해시맵(HashMap)의 사용 방식 [중요]- 'TreeMap'을 사용하여 출력하면 자동으로 정렬이 됨 ※ 오름차순 정렬. '1, 2, 3, ...', '가, 나, 다, ...', 'A, B, C, ...' [소스]■ Dto.javapackage hasMapTest; public class Dto { int num; String name; public Dto(int num, String name) { this.num = num; this.name = name; } public void output() { System.out.println("num: " + num + ", name: " + name); }}Colored by Color Scriptercs ■ mainClass.javapackag..
[주제]- 정렬 알고리즘 종류 중 선택 정렬에 대한 개념과 구현 [중요]- 첫 번째 위치에 있는 숫자는 정렬된 상태로 간주 ※ 자신보다 앞에 비교할 대상이 없기 때문 - 자신보다 앞에 위치한 숫자랑 비교해가면서 배치(정렬)을 같이 진행 ■ 그림(삽입 정렬 과정)- 숫자 '2, 4, 3, 1'을 오름차순으로 정렬 - 두 번째 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞에 위치한 숫자 뒤에 배치 - 다음 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 낮으므로 앞에 위치한 숫자는 뒤로 이동 - 다시 임시 공간의 숫자와 더 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞..
- Total
- Today
- Yesterday
- java
- 정렬
- Delphi
- ADODB
- RA
- VCL
- 말하기
- 상황
- 대상
- 알고리즘
- 계산기
- 응용
- System
- 영어
- Pte
- 교육센터
- 일기
- 왕초보 영어회화 100일의 기적
- 설명
- 문법
- SWT
- tdataset
- wfd
- 여행영어 100일의 기적
- 자료구조
- 스택
- Reference
- SysUtils
- 작문
- 독해
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |