반응형
자바 언어는 "Write Once, Run Anywhere" 원칙을 따라 어느 운영체제에서든 코드를 한 번 작성하면 어디에서든 실행될 수 있다. 이는 자바의 플랫폼 독립성을 강조하는 특징이다. 자바는 자바 가상 머신(Java Virtual Machine, JVM)을 통해 운영체제와 독립적으로 실행된다. - 만약에 운영체제마다 소스코드를 하나 씩 따로 만든다면.. 위 그림처럼 각 운영체제에 맞는 소스코드를 따로 작성해야 하는 번거로움이 생긴. 이 같은 문제를 해결하기 위해서 자바는 다음과 같은 방식으로 WORA(Write Once Run Anywhere)를 구현할 수 있다.(한번 작성하고 어느 환경에서든 돌아간다.) 자바 소스코드는 바이트코드로 컴파일되며, 이는 각 운영체제에 맞춘 JVM을 통..
- 우선순위 큐: 큐(Queue)로 이루어진 자료에서 우선순위가 높은 데이터가 먼저 pop되는 것을 말한다. 이때 우선순위가 높다는 것은 데이터 중에서 가장 높은 값, 가장 낮은값 등 기준은 활용하는 것에 따라 다르다. 힙에서 배웠듯이 힙구조(최대 힙이라고 한다면)는 루트노드에 가장 높은 데이터의 값을 배치한다. pop을 한 후에도(루트노드 값을 pop) 다시 최대힙구조를 만족시키기 위한 작업을 한다. 즉, 남은 데이터 값 중에서 가장 높은 값을 다시 루트노드에 배치하게 된다. 이는 우선순위 큐의 정의대로, 우선순위가 높은 값이 먼저 pop되는 것을 구현 하게 되는 것이다. -힙 정렬: 힙 정렬이란 힙구조를 이용한 정렬을 말한다. 우선 순위 큐는 힙을 이용하여 구현하기 때문에 우선순위 큐를 이용하여 힙..
힙(Heap)은 완전이진트리(자식노드의 개수가 최대 2개이며 왼쪽부터 오른쪽으로 채워나감)를 베이스로 구현된것으로,부모노드의 값은 항상 자식 노드의 값보다 크거나 작다. 이때 형제노드간의 대소관계는 없다. 오직 부모, 자식노드 사이에만 대소 관계가 있다. -최대 힙: 부모노드 >= 자식노드인 경우를 말한다. -최소 힙: 부모노드 -최대 힙의 삽입 -최대 힙의 삭제 -힙을 배열로 표현하는 방법완전이진트리의 특성을 이용하여 힙을 배열로 만들 수 있다.아래의 그림은 위의 이진트리를 배열로 표현한 것이고 다음과 같은 규칙이 있다. 계산의 편의를 위해서 인덱스 0번자리는 비워둔다.(다른 글 참고하다보면 인덱스0부터 시작하는데도 있음) 노드들을 배열에 넣는 순서는 레벨을 아래로 내려가면서..
자료구조에서 그래프란 정점(vertex)과 간선(edge)로 표현되는 자료구조 형태를 말한다. 트리는 그래프의 일부이다. 이때 그래프는 트리와 달리 계층적이지 않다. -정점(Vertex): 트리에서의 노드같은 개념이며 데이터를 담아내는 공간 -간선(Edge): 정점들을 이어주는 선-인접 정점(Adjacent vertex): 서로 간선으로 이어지는 정점들의 집합-단순 경로(Simple path): 동일한 간선을 지나지 않는 경로-싸이클(Cycle): 단순경로 중에서 정점의 시작과 끝이 같은 경로-차수(Degree): 인접 정점의 개수-진출 차수(Out-degree): 방향 그래프에서 앞으로 나아가는 간선의 수-진입 차수(In-degree): 방향 그래프에서 들어오는 간선의 수 -그래프 표현 방법..
1. 트리구조의 순회방법 1)전위 순회(Preorder): Root를 제일먼저 순회 (Root ->Left -> Right) ( A, B, D, H, E, C, F, G)2)중위 순회(Inorder): Root를 중간에 순회(Left -> Root -> Right)(H, D, B, E, A, F, C,G)3)후위 순회(Posterorder): Root를 제일 나중에 순회(Left -> right -> Right)(H, D, E, B, F, G, C, A)4) 레벨 순회(Levelorder) : 위의 레벨부터 순차적으로 탐색(BFS:Breath First Search)(A, B, C, D, E, F, G, H)-레벨 순회를 제외한 순회들은 깊이부터 탐색하는 DFS(Depth First Search)이다. ..
1. 링크드 리스트(Linked List) -배열과 같이 완전히 이어 붙히지 않고 지정하는 다음데이터를 가리키는 포인터를 만들어서 연결한다. 이렇게 연결된 사슬처럼 데이터를 저장하는 자료구조를 링크드 리스트(연결리스트)라고 한다. -배열과의 차이점은 삽입,삭제가 배열보다 빠르다. 연결된 선만 바꿔주면 되기 때문이다. 단점으로는 데이터 조회시에 인덱스를 활용하지 못하므로 배열보다 느리다. #기본적인 개념형태class Node(): def __init__(self, data): self.data = data self.next = None# 각 노드들 생성n1 = Node(1)n2 = Node(2)n3 = Node(3)n4 = Node(4)#노드 연결n1.next = n2..
| 내 블로그 - 관리자 홈 전환 |
Q
Q
|
|---|---|
| 새 글 쓰기 |
W
W
|
| 글 수정 (권한 있는 경우) |
E
E
|
|---|---|
| 댓글 영역으로 이동 |
C
C
|
| 이 페이지의 URL 복사 |
S
S
|
|---|---|
| 맨 위로 이동 |
T
T
|
| 티스토리 홈 이동 |
H
H
|
| 단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.