[주제]- 퀵 정렬에 대한 개념과 구현 [중요]- 피벗의 시작 위치는 '맨 왼쪽 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'을 오름차순으로 정렬 - 두 번째 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞에 위치한 숫자 뒤에 배치 - 다음 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 낮으므로 앞에 위치한 숫자는 뒤로 이동 - 다시 임시 공간의 숫자와 더 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞..
[주제]- 배열 리스트와 연결 리스트의 사용 방식 [중요]- 배열 리스트는 'ArrayList'를, 연결 리스트는 'LinkedList'를 사용하면 손쉽게 구현 가능- 제너릭이 사용되었기 때문에 클래스 옆에 사용되는 자료형 기입 필요 ※ 소스에서는 'ArrayList'의 경우 ''로 사용, 'LinkedList'는 ''으로 사용 ※ 자료형은 클래스 이름으로 작성해야 함 [소스]import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList; public class mainClass { public static void main(String[] args) {/* * 배열 리스트 */ ArrayList arrlist = new ..
[주제]- 정렬 알고리즘 종류 중 선택 정렬에 대한 개념과 구현 [중요]- 모든 비교를 끝낸 뒤 맨 왼쪽으로 이동- 이동된 숫자는 정렬이 완료된 상태이기 때문에 다음 정렬된 숫자는 완료된 숫자 다음의 위치로 이동됨 ■ 그림(선택 정렬 과정)- 숫자 '3, 4, 2, 1'을 오름차순으로 정렬 - 전체 값 중에 가장 작은 숫자를 찾을 때까지 비교- 찾은 값의 위치와 맨 왼쪽 위치와 교체 - 정렬된 숫자를 제외하고 남은 숫자 중 작은 값을 찾을 때까지 비교- 찾은 값의 위치를 정렬 완료된 숫자의 오른쪽 위치에 있던 숫자와 교체 - 위와 같음 ■ 실행결과 [첨부 파일]
[주제]- 정렬 알고리즘 종류 중 버블 정렬에 대한 개념과 구현 [중요]- 오름차순 정렬 시(내림차순 정렬 시) 가장 큰(작은) 값을 오른쪽으로 이동- 마지막 숫자는 정렬이 완료된 상태기 때문에 더 이상 정렬 진행하지 않음 ※ 전체 길이의 '-1'한 만큼 정렬 진행 ■ 그림(버블 정렬 과정)- 숫자 '4, 2, 1, 3'을 오름차순으로 정렬 - 첫 번째 숫자와 두 번째 숫자 비교- 첫 번째 숫자가 더 높으니 위치 교체 - 두 번째 숫자와 세 번째 숫자 비교- 두 번째 숫자가 더 높으니 위치 교체 - 세 번째 숫자와 네 번째 숫자 비교- 세 번째 숫자가 더 높으니 위치 교체 - 1회전 정렬 종료- 다시 처음부터 반복 [소스]■ BubbleSort.javapackage sortBubble; public cl..
[주제]- 추상 클래스와 인터페이스 [중요]1. 추상 클래스- class 앞에 'abstract'를 붙임- 추상 메소드를 하나 이상 포함하고 있는 클래스- 반드시 상속이 필요함 2. 추상 메소드- 내용은 없고 사용할 예정이라고 선언만 한 상태- 사용하기 위해선 내부 또는 외부 클래스에서 내용에 대한 정의 필요- 메소드가 선언만 되어있거나 정의까지 되어있는 것이 섞여져 있음 3. 인터페이스- 클래스는 'implements'를 붙여서 인터페이스를 상속 받을 수 있음- 메소드가 선언만 되어있음- 반드시 상속이 필요함 ★ 각 차이점- 클래스: 메소드 선언, 정의가 전부 되어있음- 추상 클래스: 추상 메소드와 일반 메소드(정의된)- 인터페이스: 메소드가 선언만 되어있음 ※ c언어 header 파일과 흡사 [소스]..
[주제]- 클래스의 상속 방식, Over Ride [중요]1. 상속- 자식 클래스의 생성자가 호출될 때 부모 클래스의 생성자가 먼저 호출됨- 상속 방법: 클래스 오른쪽에 'extend 부모 클래스이름' 추가- 클래스는 다중 상속 불가- 인터페이스는 다중 상속 가능 2. Over Ride- 기존에 사용되는 메소드를 동일한 이름으로 내용만 재정의- 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것을 의미- 자식 클래스에서 'super' 사용 시 부모 클래스의 메소드를 사용 [소스]■ carClass.javapackage sample03.Car; public class carClass { protected int speed; // 'protected' 자식 클래스는 사용 가능 public carClass..
[주제]- 클래스를 활용하여 배열 기반의 스택 구현하기 [중요]- 'playerCls' 객체를 이용하여 'DTOClass'에 접근 후 멤버 변수의 값을 저장 ※ 'playerCls'라는 가상의 껍데기만 있는 선수를 만든 후 정보(man_id ~ money)를 입력 후 저장 - 'dto'라는 배열(스택) 객체를 통해 'DTOClass'에 접근하여 배열 인덱스에 'playerCls'를 저장 [소스 코딩]■ DTOClass.javapackage sampleDao; public class DTOClass { private int man_id; private String first_name; private String last_name; private String position; private int money..
[주제]- 이전에 구현한 야구게임을 클래스를 분리하여 관리하기 ※ 교육센터 선생님이 공개한 야구게임 소스를 활용 [소스 코딩]■ baseballClassTeacher.javaimport java.util.Scanner; class baseballClass { public static void main(String[] args) { // base ball int r_num[] = new int[3]; int u_num[] = new int[3]; boolean clear; // init(초기화) clear = false; // Random 1 ~ 10 -> 3" myRandom(r_num); clear = loop(r_num, u_num); result(clear); } public static void ..
[주제]- 생성자란 [중요]- 객체 초기화 시 메소드를 호출하기 때문에 프로그램 실행 시 최초로 1회만 실행- 동일한 이름의 메소드 사용이 가능하며, 리턴 값이 없음 [소스 코딩]■ Human.javapackage constructorClass; public class MyClass {/* * [constructor] 생성자 * 생성 시에 1회 호출 * - 다시 호출 불가능 * 클래스 이름과 동일한 메소드이며, 리턴 값이 없음 * - Over Load 가능 */ // 기본 생성자 MyClass() { System.out.println("MyClass 생성자 MyClass()"); } MyClass(char c) { System.out.println("MyClass 생성자 MyClass(char c)");..
[주제]- 객체 클래스 사용 방법, 접근 제어자 개념 [중요]- public: 다른 클래스에서도 사용. 외부에서 접근하여 값 변경도 가능- private: 현재 정의된 클래스 내에서만 사용- protected: 동일한 패키지 내에 있는 클래스끼리 사용 가능- 'this'는 인자로 받는 값과 동일한 이름을 가질 경우 사용 [소스 코딩]■ Human.java123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package classTest; public class Human {/* * [member 변수] * public 설정: 다른 클래스에서도 접근 가능 * private 설정: 은닉성. Human 클래..
[주제]- 'BufferedReader' 클래스와 'readLine' 메소드 활용 [중요]- File 클래스는 오류 발생빈도가 많아 'try, catch' 내부에서 처리- 'BufferedReader' 클래스의 객체는 저장 공간이 사용되면 다시 사용할 수 없으므로 다시 초기화 필요- 'readLine' 메소드는 while문을 이용하여 사용 [소스 코딩]package fileClass3; import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException; public class mainClass { public static ..
[주제]- File 클래스의 각종 메소드들의 기능 [소스 코딩]package fileClass; import java.io.File;import java.io.IOException; public class mainClass { public static void main(String[] args) {/* * [파일] * - 저장해 놓을 문서 * ※ ex) txt */ // 'cdir'이 컴퓨터의 c드라이브를 가리킴 File cdir = new File("c:\\File Test\\"); String filelist[] = cdir.list(); // 'cdir'의 경로(c드라이브 - File Test폴더)에 있는 파일을 모두 출력 for (int i = 0; i
[주제]- try, catch 사용방식 [중요]- 오류를 검사하고, 오류 발생 시 처리에 대한 내용을 작성할 수 있음- 'catch'에 사용되는 'Exception' 클래스는 다양한 종류가 있지만 'Exception'만 작성해도 모든 것을 포함시킴- 'catch'가 2개 이상일 경우 해당 오류 종류에 맞는 '오류종류Eception'으로 작성하여 각각 대처 가능- 'finally'는 잘 사용되지 않음 [소스 코딩]package sample01; public class mainClass { public static void main(String[] args) {/* * [try catch] * try { * 오류 검사할 내용 * } catch(오류 클래스 이름 변수명) { * 내용 * } finally { ..
[주제]- 트럼프 카드 블랙잭 게임 구현 [중요]- 기존에 카드를 섞는 코드 활용- 기본 블랙잭 규칙에서 일부 변경하여 적용 [소스 코딩]/* * [게임 규칙] * * 공통 * - 유저와 딜러의 1:1 대결 * - 52장의 트럼프 카드를 사용(13장(A~K)씩 4묶음_ * ※ 문양(스페이드, 다이아몬드, 하트, 클로버)의 의미는 없음 * - 최초 기본 카드는 각각 2장을 배분 * - 'J, Q, K'는 10점으로 계산 * - 'A'는 '1점' 또는 '11점'으로 계산되는데, * '점수 > 21점 == 1점'으로 계산, '점수
[주제]- 이전에 구현한 '야구게임'의 소스코드를 영역 별로 나눠 메소드로 만들기 [중요]- 사용자에게 숫자를 입력 받는 메소드는 게임을 반복시키는 'loop' 메소드 안에서 사용 [소스 코딩]package baseballGameMethod; import java.util.Scanner; class baseballGameMethod { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int randNum[] = new int[3]; // 무작위로 결정된 숫자를 저장할 공간 while (true) { myRandom(randNum); result(loop(randNum, scan)); if (!reGame(sca..
- Total
- Today
- Yesterday
- Pte
- Delphi
- System
- RA
- 대상
- 독해
- 여행영어 100일의 기적
- 왕초보 영어회화 100일의 기적
- 문법
- 영어
- SWT
- 계산기
- wfd
- 교육센터
- 알고리즘
- ADODB
- java
- Reference
- 정렬
- 상황
- 응용
- 스택
- 작문
- tdataset
- 설명
- VCL
- 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 |