일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쿠키
- 코드
- WebClient
- 클린
- JsonNode
- code
- mysql
- 선형 리스트
- 마크다운 테이블
- 정렬
- @RequiredArgsConstructor
- CleanCode
- @NoArgsConstructor
- 연결 리스트
- 빅 오 표기법
- 클린코드
- 인터페이스
- query
- 쿼리메소드
- 마크다운
- 배열
- java
- 트리
- 클래스
- 계산 검색 방식
- @ComponentScan
- 스택 큐 차이
- 자료구조
- 리스트
- 내부 정렬
- Today
- Total
목록분류 전체보기 (149)
Developer Cafe
역사 1950년 미국의 수학자 Stephen에 의해 개발되어, 초기엔 유닉스 계열에서 이용되어지다 현재는 java, python, js등에서 사용되고 있다. 패턴 // 안에 찾고자하는 텍스트를 넣고 뒷 / 뒤에 패턴을 입력한다 문법 ex) /gr(e|a)y/ 또는 /gr[ea]y/ ----------> grey, gray 가 찾아짐 ex) /gr(?:e|a)y/ 은 grey, gray 을 찾되 기억하지는 않는다 라는 뜻이다 ex) /gr[a-zA-B0-5]y/ 라는 뜻은 gray ~ grzy 까지 찾고 grAy ~ grBy까지 찾고 gr0y ~ gr5y 까지 찾는다 ※ 위의 /gr[a-zA-B0-5]y/의 반대는 /^gr[a-zA-B0-5]y/ 이다 ex) /gra?y/의 뜻은 a가 없거나 있거나 라는 ..
정렬된 배열([1, 3, 5, 9, 15])은 삽입, 삭제가 일반 배열([3, 5, 1, 15, 9])보다 거쳐야 되는 단계수가 더 많다. 그러나 선형검색(인덱스0부터 차례차례)대신 이진검색(100의 중앙 50찾고 50중앙 25찾고 점점 찾고자하는 값에 절반을 날려 단계수가 대폭 줄어듬)을 사용할 수가 있다. 결론 : 만들고자하는 서비스에 사용될 알고리즘이 데이터 검색은 거의 없고, 데이터를 추가하기만 한다면 일반 배열이 더 나을 수 있으나, 검색 기능이 더 많은 서비스를 구현할때는 정렬된 배열이 훨씬 낫다.
1. 배열의 인덱스는 0부터 시작하며 인덱스 0의 메모리 주소는 1010이다. 2. 인덱스 3은 인덱스 0부터 정확히 세 슬롯 뒤에 있다. 3. 따라서 인덱스 3을 찾으려면 1010+3인 1013 메모리 주소로 간다.
다항식 노드는 계수를 저장하는 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