일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 계산 검색 방식
- 클린코드
- 마크다운
- 스택 큐 차이
- 정렬
- code
- 코드
- 선형 리스트
- 쿼리메소드
- mysql
- JsonNode
- 쿠키
- @RequiredArgsConstructor
- 빅 오 표기법
- CleanCode
- 자료구조
- 트리
- 연결 리스트
- 인터페이스
- 클래스
- 마크다운 테이블
- query
- 클린
- @ComponentScan
- @NoArgsConstructor
- 내부 정렬
- 배열
- java
- 리스트
- WebClient
- Today
- Total
목록자료 구조 (46)
Developer Cafe
다항식 노드는 계수를 저장하는 coef와 지수를 저장하는 expo의 두 필드와 링크필드로 구성된다. coef expo link A(x) = 4x^3 + 3x^2 + 5x B(x) = 3x^4 + x^3 + 2x + 1 위의 두 식을 다항식 노드를 사용해서 표현하면 coef expo link coef expo link coef expo link 4 3 . 3 2 . 5 1 null coef expo link coef expo link coef expo link coef expo link 3 4 . 1 3 . 2 1 . 1 0 null
순차 선형 리스트는 논리적인 순서와 물리적이 순서가 같기 때문에 원소의 위치를 찾아 액세스하기 쉬우나, 삽인 삭제 후 원소들의 위치이동에서 많은 추가작업과 시간이 필요하다. 이러한 문제를 개선한 자료 표현 방식으로 연결자료구조(비순차 자료구조)가 있다. 연결자료구조는 노드를 사용하는데 노드는 데이터필드와 링크필드로 구성되어있다. data(원소) link(주소) 단순 연결 리스트 - 노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조를 가진 연결리스트 ex) 다음 연결리스트 월, 금 사이에 150[수][null]를 연결하려면 100 -> 100[월][200] -> 200[금][300] -> 300[일][null] 100 -> 100[월][150] -> 150[수][200] -> 200[금][300..
○ 행의 개수가 m, 열의 개수가 n 일때 mn이 같은 행렬은 정방행렬이다. ○ 행렬의 행과 열을 서로 교환해 구성한 행렬을 전치행렬이라 한다. 1 2 3 4 5 6 1 4 2 5 3 6 ○ 실제 사용하는 공간보다 사용하지 않는 공간이 많아 기억공간에 대한 사용 효율성이 떨어지는걸 희소행렬 이라한다. 0 2 0 0 0 4 0 9 5 0 0 0 7 0 8 0 이는 배열로 0이 아닌 원소들에 대해 으로 추출가능하다.
만약 A(x) = 4x^3 + 3x^2 + 2 일때 아래와 같이 표현된다. 0 1 2 3 A 4 3 0 2 만약 A(x) = 3x^1000 + 1x^1 + 4 일때는 아래와 같이 표현된다. 0 1 2 3 4 ... 998 999 1000 A 3 0 0 0 0 ... 0 1 4 실제 사용하는 것은 3개뿐이고 998개의 배열 공간은 낭비된다. 그래서 아래와 같이 2차원 배열에 저장한다. [0] [1] [0] 1000 3 [1] 1 1 [2] 0 4 Ex) A(X) + B(X)을 구하는 식을 자바 코드로 나타내면 A(X) = 4x^3 + 3x^2 + 5x B(X) = 3x^4 + x^3 + 2x + 1 public class Ex { public static void main(String args[]) { f..
영업1팀 자동차 판매량 년/분기 1/4 2/4 3/4 4/4 2019년 63 84 140 130 2020년 157 209 251 312 영업2팀 자동차 판매량 년/분기 1/4 2/4 3/4 4/4 2019년 63 84 140 130 2020년 157 209 251 312 int sale[][][] = new int[][][] {{{63, 84, 140, 130}, {157, 209, 251, 312}}, {{59, 80, 130, 135}, {149, 187, 239, 310}}}; 분기, 연도, 팀에 대한 순서를 나타내야 하기 때문에 세 개의 인덱스가 필요하다. 3차원 배열이 필요하다. 3차원 논리 구조를 1차원의 물리 구조로 변환하는 방법은 인덱스인 면을 기준으로하는 방법과 마지막 인덱스인 열을 기준..
class Ex { public static void main(String srgs[]) { int sale[][] = new int[][] = {{63, 84, 140, 130}, {157, 209, 251, 312}); } } 0 1 2 3 0 63 [0][0] 84 [0][1] 140 [0][2] 130 [0][3] 1 157 [1][0] 209 [1][1] 251 [1][2] 312 [1][3] 2차원 배열일 경우 원소 위치 계산방법은 행 우선 순서와 열 우선 순서에 따라 달라진다 원소 위치 계산 - 행의 개수가 ni이고 열의 개수가 nj인 배열 A[ni][nj] 의 시작 주소가 a이고 원소 길이가 l 일때 A[i][j]의 위치는 행 우선 구조에서는 a+(ixni+j)xl 이 되고, 열 우선 구조..
int sale[] = new int[] {157, 209, 251, 312} 1차원 배열 sale은 int데이터 타입으므로 각 원소의 길이는 4바이가 된다. 배열 sale의 각 원소의 위치는 시작주소가 α일때 α+(인덱스 x 4바이트)가 된다. 문) 시작위치가 100번지이고 원소의 길이가 5바이트인 선형 리스트가 행 우선 순서 방법으로 저장되어있을 때, 9번째 원소의 주소는 얼마인가? (※ 9번째 원소의 인덱스는 8이 된다. 인덱스는 0부터 시작!) a+(ixℓ) = 100 + (8x5) = 140
(a) 원소 삭제 전 0 1 2 3 4 5 6 10 20 30 40 50 60 70 (b) 원소 삭제 후 (2번 자리 삭제 후 자리이동) 0 1 2 3 4 5 6 10 20 40 50 60 70 2번 자리 30을 삭제하면 빈자리가 생긴다. 이 자리를 채우기 위해 한칸씩 앞으로 이동해야되는데 이때 이동 횟수는 ( 마지막 원소의 인덱스 - 삭제한 원소의 인덱스) 가된다. 즉, 6 - 2 = 4 가 되므로 필요 이동 횟수는 4 읻다.
(a) 원소 삽입 전 0 1 2 3 4 5 6 10 20 30 40 50 60 (b) 원소 삽입 후(2번자리에 70 삽입) 0 1 2 3 4 5 6 10 20 70 30 40 50 60 이때 이동 횟수는 ( 마지막 자리 인덱스 - 삽입할 자리 인덱스 + 1 ) 이다. 즉, 2번 자리에 빈 자리를 만들기 위한 이동 횟수는 5 - 2 + 1 = 4 이다.
객체는 캡슐화 코드의 재사용성 다형성의 특징을 가진다 캡슐화 - 객체 내부의 메소드와 데이터를 외부에서 사용할 수 없도록 감싸서 객체를 독립적인 프로그램 부품으로 만드는 것이다. 캡슐화된 객체는 지정한 인터페이스를 통해서만 외부와 연결되어 밖에서 안의 내용을 볼 수 없기 때문에 독립성을 갖는다. 이를 데이터 은닉이라 한다. - 캡슐화 되어 있는 객체는 인터페이스만 맞춰주면 다른 프로그램에서도 연결하여 사용할 수 있다. 다형성 - 같은 메소드가 상황에 따라 다른 연산을 수행하는 것이다. 다형성을 갖는 객체의 메소드는 같은 이름으로 호출되어도 호출된 상황에 따라 구분되어 수행된다.