전체 글
-
[ CSS ] transform과 좌표계HTML & CSS/이론 2023. 1. 9. 22:45
뷰포트와 좌표계 모든 뷰표트는 좌표계라 할 수 있으며 좌측 상단을 원점으로 합니다. 아래의 그림은 좌표계를 시각화해서 나타낸 것인데 약간의 실수가 있으니 각 축이 가지는 이동 및 회전의 방향만 확인하시기 바랍니다. transform 적용에 따른 좌표계 이동 css를 사용해 각 요소에 transform을 적용한다면 각 요소는 로컬 좌표계를 생성하고 원점을 각 요소의 50%, 50% 지점으로 정의합니다. 이러한 로컬 좌표계의 원점은 transform-origin 속성을 통해 조작가능합니다. css에서의 변형은 기본적으로 transform matrix와의 연산을 통해 이루어집니다. matrix의 연산에서 교환법칙은 성립되지 않으므로 각 transform의 적용 순서에 주의해야합니다. 아래 그림에서와 같이 ro..
-
[ 선형 자료구조 ] 스택(Stack) & 큐(Queue)Computer Science/자료 구조 2023. 1. 9. 13:55
1. Stack 1) 개념 스택은 LIFO(last-in-first-out), 즉, 후입선출 원칙을 따르는 선형 자료구조이다. 따라서 데이터의 출입은 한 방향에서만 이루어지고, 이름에 걸맞게 쌓아가는 구조를 가진다. 데이터에 대한 접근은 가장 위층에 대해서 가능하며, 삽입(push) / 삭제(pop) 연산 또한 가장 위층의 데이터에 대해서 가능하다. 스택에서 사용되는 주요 연산은 앞서 소개한 push, pop과 더불어 가장 위층의 데이터를 삭제하지 않고 반환하는 peek, 스택이 비었는지 여부를 반환하는 isEmpty 등이 있다. 2) 장점 구조 자체가 간단하고 직관적이며, 구현이 쉽다. 가장 마지막 데이터에대한 접근만 가능하므로 데이터에 대한 접근이 매우 빠르다. 3) 단점 최대 할당 크기가 제한된다...
-
[ 선형 자료구조 ] VectorComputer Science/자료 구조 2023. 1. 9. 11:50
1. Vector 1) 개념 컴퓨터 과학에서 벡터는 배열과 유사하되 동적으로 크기를 조정할 수 있는 자료구조이며, 배열처럼 연속된 메모리 를 바탕으로 구성된다. 백터는 데이터를 연속되게 쌓으며 삭제/삽입 등의 연산시 대상 인덱스 이후의 요소들의 위치를 조정한다. 2) 장점 쉽게 크기 조정이 가능하다. idx를 통해 빠르게 각 요소에 접근가능하며 O(n)의 시간 복잡도를 갖는다. 끝 요소의 경우 삽입/삭제 연산이 빠르다. O(n)의 시간복잡도를 갖는다. 요소 저장을 위한 메모리만 사용하기 때문에 배열보다 메모리 측면에서 효율적이다. 3) 단점 요소들의 위치 조정이 필요하기 때문에 끝 이외의 부분에서의 삽입/삽제 연산은 배열보다 느리다. 각 요소의 크기, 저장된 요소의 개수 등의 정보를 포함하기 때문에 배열..
-
[ 선형 자료구조 ] 배열 & 리스트Computer Science/자료 구조 2023. 1. 6. 16:01
1. 배열 1) 개념 배열은 연관된 데이터를 그룹핑해 관리하는 방식의 자료구조이다. 연속적인 메모리 블록에 데이터를 저장하며, 각 항목을 요소(element)라 한다. 배열은 생성될 때 크기가 고정되며, 해당 위치를 결정하는 인덱스를 가진다. 2) 배열의 특징 (1) 장점 각 항목이 고정적인 인덱스를 가지며, 이를 통해서 각 항목의 요소로의 접근이 O(1)의 빠른 시간복잡도를 가진다. 따라서 잦은 접근이 필요한 데이터를 저장하기에 알맞다. 배열의 경우 데이터의 크기가 고정적이고 잦은 접근이 필요한 경우, 혹은 인덱스가 중요한 경우 이점을 가진다. (1) 단점 생성과 함께 사이즈가 고정되기 때문에 요소의 추가/삭제가 자유롭지 못하다. 항목의 데이터를 삭제해도 인덱스 값은 고정되며 메모리상에서 지속적으로 자..
-
[ JS ] JS의 Array와 자료 구조 관점에서 Array의 차이는?문득 든 의문점 2023. 1. 5. 23:07
의문점 선형 자료구조를 공부하면 Array는 크기 및 인덱스가 고정적이며, 데이터의 입출력에 따른 메모리의 최적화가 이루어지지 않음을 알 수 있다. 하지만 JS에서는 Array 생성후 메서드를 통해 크기의 조정이 가능하며 각 요소가 갖는 인덱스 또한 메서드 적용에 따라 변화한다. 자바스크립트에서의 Array는 자료구조에서 배운 Array와 어떤 차이를 갖는 것일까? 결론 자바스크립트에서 배열을 특별한 유형의 객체이다. Array.prototype 을 상속받아 마치 배열과 같이 숫자형 키를 사용해 요소의 순서를 가지며 메모리 공간에서 연속된 자리를 차지한다. 또한 length 프로퍼티, push, pop, shift, unshift 등 순회와 변형에 대한 메서드를 가진다. 즉, 자바스크립트에서의 배열은 배..
-
[ 자료구조 ] linked list의 삽입/삭제는 정말 array list보다 빠른가?문득 든 의문점 2023. 1. 5. 22:19
의문점 연결 리스트의 경우 삽입/삭제 자체는 O(1)의 시간 복잡도를 가지지만, 대상이 되는 인덱스 까지 찾아가는 과정을 고려한다면 O(n)의 시간 복잡도가 추가된다고 볼 수 있는데 이를 단순히 O(n + 1)이라 가정한다면 O(n)의 시간 복잡도를 가지는 배열 리스트보다 빠르다고 할 수 없지 않는가? 결론 배열 리스트의 경우 특정 인덱스에 요소를 삽입 / 삭제할 경우 해당 인덱스 이후 모든 요소의 위치를 이동시켜야 한다. 따라서 일정하게 O(n)의 시간 복잡도를 갖는다. 하지만 연결 리스트의 경우 head 부분에 가까워질수록 시간복잡도는 O(1)에 가까워진다. 즉, 삽입/삭제의 대상이 될 인덱스의 위치에 따라 O(1) ~ O(n)의 시간 복잡도를 갖는다. 결론적으로 연결리스트는 배열 리스트보다 빠르거나..
-
[ 선형 자료구조 ] 연결 리스트 - Circular Linked List(원형 연결 리스트)Computer Science/자료 구조 2023. 1. 4. 17:27
연결 리스트는 각각의 요소들이 "노드"에 저장되는 선형 자료 구조이다. 각 노드들은 다음 노드에 대한 참조값을 가지며 이를 "링크"라 한다. 이러한 노드들로 이루어진 연결 리스트는 노드의 link filed를 사용함으로써 데이터의 추가 및 삭제를 모든 리스트 인덱스에 대한 방문 및 재구성 없이 실행 가능하다. 연결 리스트는 스택, 큐, 그래프 등을 구현하는데 자주 사용되며, 그 종류로는 Singly linked list, Doubly linked list 등이 있다. 1. 기본 배경 지식 1) Node 연결 리스트를 구성하는 노드는 Data filed, Linke filed 두 가지 필드로 이루어진 묶음이다. Data filed는 node는 integer, character 등 노드가 보유할 실제 데이터..
-
[ 선형 자료구조 ] 연결 리스트 - Doubly Linked List(이중 연결 리스트)Computer Science/자료 구조 2023. 1. 3. 16:47
연결 리스트는 각각의 요소들이 "노드"에 저장되는 선형 자료 구조이다. 각 노드들은 다음 노드에 대한 참조값을 가지며 이를 "링크"라 한다. 이러한 노드들로 이루어진 연결 리스트는 노드의 link filed를 사용함으로써 데이터의 추가 및 삭제를 모든 리스트 인덱스에 대한 방문 및 재구성 없이 실행 가능하다. 연결 리스트는 스택, 큐, 그래프 등을 구현하는데 자주 사용되며, 그 종류로는 Singly linked list, Doubly linked list 등이 있다. 1. 기본 배경 지식 1) Node 연결 리스트를 구성하는 노드는 Data filed, Linke filed 두 가지 필드로 이루어진 묶음이다. Data filed는 node는 integer, character 등 노드가 보유할 실제 데이터..