원지의 개발
728x90
article thumbnail
[Java] Enum(열거형)
프로그래밍 언어/Java 2023. 6. 8. 02:08

Enum 관련된 상수들을 묶어 놓은 것 java에서는 타입이 안전한 열거형을 제공 - 컴파일 시간에 타입 체크를 받으므로, 이는 런타임 시에 발생하는 오류를 줄여줌 정의, 사용 enum 열거형이름 { 상수명1, 상수명2, ... } enum Direction { EAST, SOUTH, WEST, NORTH } class Unit { int x, y; //유닛의 위치 Direction dir; //열거형을 인스턴스 변수로 선언 void unit { dir = Direction.EAST; //유닛의 방향을 EAST로 초기화 } } switch ~ case 사용 public enum Direction { BASKETBALL, SOCCER, BASEBALL, TENNIS, SWIMMING, MARATHON } ..

article thumbnail
[자료구조&알고리즘] 리스트 (선형, 연결(포인터, 커서), 원형, 이중 연결)

리스트 - 데이터를 순서대로 나열해 놓은 자료구조 선형 리스트 배열로 선형 리스트 구현시 다음 노드 꺼내기 순서대로 데이터가 저장되어 있기 때문에 1만큼 큰 인덱스를 갖는 요소에 접근 노드의 삽입, 삭제 삽입, 삭제 시 다음의 모든 요소를 하나씩 뒤로 밀거나 앞으로 당겨야 함 선형 리스트 장점 1. 구조가 간단 2. 데이터를 읽어오는데 걸리는 시간이 가장 빠름 선형 리스트 단점 1. 쌓이는 데이터의 크기를 미리 알아야 함 2. 밀거나 당겨야 하기 때문에 효율이 좋지 않음 연결 리스트 - 포인터 연속된 노드의 결정체 자신과 같은 자료형의 인스턴스를 가리킴, 자기 참조(self-referential)형 클래스형 변수인 data는 데이터 그 자체가아니라 데이터에 대한 참조 꼬리 노드의 뒤쪽 포인터 값을 nul..

article thumbnail
[자료구조&알고리즘] 셸, 퀵, 병합, 힙, 도수(계수) 정렬

셸 정렬 단순 삽입 정렬의 장점은 살리고, 단점을 보완하여 좀 더 빠르게 정렬 장점: 정렬을 마쳤거나 마친 상태에 가까우면 속도가 빨라짐 단점: 삽입할 위치가 멀리 떨어져 있으면 이동해야 하는 횟수가 많아짐 정렬할 배열의 요소를 그룹으로 나눠 각 그룹별로 단순 삽입 정렬 수행 ▶ 그룹을 합치면서 정렬 반복(이동 횟수 줄임) i = 8일 때 j = 4-4 = 0인데 조건으로 j >= 0이 가능하게 만들어줌으로써 구간이 [4] ~ [12]까지로 바뀌고 계속 반복 실행 static void shellSort(int[] a, int n) { //n = 배열의 길이 for(int term = n/2; term > 0; term /= 2) { //{8, 1, 4, 2, 7, 6, 3, 5} 일 때 h = 8, 4,..

article thumbnail
[SQL] limit, distinct, database cheat sheet

Database cheat sheet https://cheatography.com/tag/database/ 55 Database Cheat Sheets - Cheatography.com: Cheat Sheets For Every Occasion 55 Database Cheat Sheets Related tags: SQL Development Data Server MySQL cheatography.com limit 몇 개의 행을 반환할 것인지 제한하는 구문 MySQL, postgreSQL 사용 가능 select 컬럼명 from 테이블명 limit 개수; select 컬럼명 from 테이블명 limit offset, 개수; --offset은 0부터 시작 distinct 중복제거 하는 구문 MySQL, Ora..

article thumbnail
[자료구조&알고리즘] 재귀 알고리즘(팩토리얼, 유클리드 호제법), 하노이의 탑, N퀸 문제 ???

재귀 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 함 이게 안되면 디바이드 앤 컨커, 다이나믹 프로그래밍 다 안됨 재귀호출: 자기 자신과 똑같은 메서드를 호출 선언적 프로그래밍(declarative programming) = 목적만 설정해 주면 중간 과정은 컴퓨터가 알아서 함 : 언제 종료하고, 이 문제를 어떤 식으로 정의 할 수 있는가 명시 직접(direct) 재귀: 자신과 같은 메서드 호출 간접(indirect) 재귀: 메서드 a가 메서드 b를 호출, 다시 메서드 b가 메서드 a를 호출 재귀함수를 짜는 법 1. 종료 조건 2. 문제의 정의 팩토리얼 음이 아닌 정수의 팩토리얼 1. 0! = 1 2. n > 0 이면 n! = n * (n-1)! ..

article thumbnail
진법 변환 / StringBuilder & StringBuffer / Arrays.stream
프로그래밍 언어/Java 2023. 5. 7. 01:24

진법 변환 진수는 8비트 기준으로 1, 2, 4, 8, 16 ... 배수로 나타냄 2진수: 11011000 = 1 + 2 + 8 + 16 = 27 16진수: 2진수에서 4개를 묶어서 읽기, 0 ~ 9 ABCdef 로 표현 00000110 = 2 + 4 = 06 10진수 숫자 2진수 0B 붙임 8진수 0 붙임 16진수 0x 붙임 10진수 ▶ n진수 //1. 10진법 ▶ 3진법 String a = ""; //값을 더해주려고 while(n > 0) { //n이 0보다 클때까지 반복 a = (n % 3) + a; //문자열 앞에 3으로 나눴을때 나머지를 더해줌 n /= 3; //반복하기 위해 n을 3으로 나눠줌 } //2. Integer.toString(문자열, 진법) 사용 a = Integer.toString..

article thumbnail
[자료구조&알고리즘] stack(스택), queue(큐)

스택 (stack)데이터를 일시적으로 저장하기 위한 자료구조후입선출, LIFO(Last In First Out)메서드를 호출하고 실행할 때 프로그램 내부에서 스택 사용arr[0] = bottomarr[n-1] = top스택 만들기필드 & 생성자package chap04_1;public class IntStack { private int max; //스택 용량, 배열 길이 private int ptr; //스택 포인터, 현재 쌓여 있는 데이터의 수(인덱스가 아님) private int[] stk; //스택 본체 //실제로는 본체를 참조하는 배열 변수로 배열 본체는 생성자에서 생성함 //실행 시 예외: stack이 비어있음 public class EmptyIntStackException extends R..

[알고리즘] 유클리드 호제법 (Euclidean algorithm), 약수, 배수

유클리드 호제법 (Euclidean algorithm)두 개의 수가 있을 때, 최대공약수를 구하는 알고리즘소인수분해를 하면 효율적이지 않고, 두 수가 크면 시간 복잡도는 계속 증가하므로 유클리드 호제법 알고리즘을 사용하면 문제를 쉽게 해결 가능함GCD(a, b) = GCD(b, r)r : a mod b (a에서 b를 나눈 나머지)조건: 0 ≤ r a, b 를 서로 나눌 때, r=0 이 되면 그 때 b가 최대공약수나머지가 0이 되는 시점까지 계속해서 동일한 연산을 진행해야 하는데 몇번을 통해서 가능한지 알 수 없기 때문에 재귀형태로 구현해야 함최대공약수 GCDGreat Common Divisor: 가장 큰 공통된 약수1. 반복문int GCD(int a, int b) { while(b != 0) { ..

article thumbnail
[자료구조&알고리즘] 검색(검색 알고리즘, 선형검색, 이진검색)

검색 알고리즘 검색과 키 검색을 할 때 특정 항목에 주목하게 되는데 이를 key라고 함 key: 데이터의 일부 배열에서 검색 용도나 목적, 실행 속도, 자료구조 등을 고려하여 알고리즘 선택해야 함 다음의 알고리즘 활용 1. 선형 검색: 무작위로 늘어놓은 데이터 모임에서 검색 2. 이진 검색: 일정한 규칙으로 늘어놓은 데이터 모임에서 빠른 검색 3. 해시법: 추가, 삭제가 자주 일어나는 데이터 모임에서 빠른 검색 1) 체인법: 같은 해시 값의 데이터를 선형 리스트로 연결 2) 오픈 주소법: 데이터를 위한 해시 값이 충돌할 때 재해시 배열 검색의 종료 조건 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 = 검색 실패 검색할 값과 같은 요소를 발견할 경우 = 검색 성공 배열의 요솟수가 n개일 때 조건 ..

728x90
250x250