본문 바로가기

개발

(14)
Vue.js 를 활용하여 간단한 달력 만들기 이번에 첫직장을 갖게 되면서 입사 하기전 회사에서 사용할 기술스택을 미리 공부하려고 합니다. 그중에서도 핫한 프론트엔드 프레임워크인 Vue.js로 첫 토이 프로젝트를 만들어 보았습니다. 아직 리팩토링도 하지않고 기능도 없지만 Vue.js에서 데이터를 어떻게 관리하고 렌더링하는지를 알아보았습니다. 구현 결과물은 아래와 같습니다. 1. 우선 별도의 css 코드를 작성하지않고 bootstrap을 사용하기 위해 index.html 파일의 사이에 부트스트랩 CDN을 import 합니다. 2. Calendar.vue 파일을 생성하여 아래와 같이 코딩합니다. *HTML 코드 *Script 코드 export default { name: 'Calendar', data () { return { weekNames: ["월요..
Chapter4 Trees and Graph How to Approach 트리와 그래프는 상당히 중요하다. 트리 중에서도 이진트리는 굉장히 많이 쓰이며 여러 알고리즘 문제나 인터뷰에서 출제가 되는 영역이다. 때문에 이진 트리의 각 순회 알고리즘과 삽입/삭제 알고리즘 정도는 언제든지 작성할 수 있어야한다. 그래프 탐색에서는 DFS(깊이 우선 탐색), BFS(넓이 우선 탐색) 알고리즘을 작성할 수 있어야 한다. Binary Trees - "Must Know" Algorithms중위순회, 전위순회, 후위순회에서 이름이 뜻하는것의 기준 노드는 "부모 노드"이다.때문에 전위는 부모를 제일먼저 중위는 2번째 후위는 부모를 가장 마지막에 방문하는 탐색 방법이다. * In-Order(중위순회) : 왼쪽 서브트리 ->부모 노드 -> 오른쪽 서브트리 * Pre-Or..
Chapter3 Stacks and Queues How to Approach? 기본적인 Stack, Queue를 구현하는 방법에 대해 확실히 알고있어야 합니다. 인터뷰전 Stack과 Queue는 확실하게 구현할 수 있도록 합시다. Stack과 Queue는 List의 하위 자료구조로 들어온 데이터의 순서와 나가는 데이터의 순서가 다릅니다. Stack같은 경우는 불공평하다고 생각하지만 먼저 들어온 데이터가 가장 나중에 나가고 Queue는 공평하게 줄서있는것처럼 먼저들어온 데이터가 먼저 나가게 됩니다. 이때 내부적으로는 배열이나 연결리스트를 사용하여 데이터를 저장할 수 있는데 각각의 장단점은 배열과 연결리스트의 장단점과 같습니다.(배열의 경우는 인덱스를 통한 접근을 통해 탐색이 O(1)로 무척 빠르며 삽입/삭제시에는 shift 과정이 필요하여 O(N)의 복..
Chapter2 Linked Lists Createing a Linked ListLinkedList는 각 노드마다 다음 노드의 주소값을 가지고 있는 List입니다. 배열처럼 인덱스를 가지고 탐색하는것이 아니고 연결된 리스트를 하나하나 탐색하며 찾다보니 탐색에 대한 시간복잡도는 O(n)입니다. 대신 삽입/삭제 연산시에는 배열은 Shift하는 과정이 필요해서 복잡도가 O(n)이지만 LinkedList는 해당 노드의 앞뒤의 연결부분만 바꿔주면 되기 때문에 상수시간의 복잡도로 처리가 가능하다는 장점을 가지고 있습니다. 중간에서 삭제를 하거나 삽입을 하는 경우엔 케이스를 나눠서 구현하면 쉽게 구현할 수 있다. 헤드가 타겟 노드인 경우타겟노드가 중간에 있는 경우리스트의 마지막 노드가 타겟 노드인 경우때문에 위의 코드처럼 3가지 경우를 나눠서 연결 상태를..
Chapter1 Arrays and Strings [Hash Tables] 해쉬테이블은 key를 이용하여 value를 저장하는 자료구조이다. 해쉬란 수학적인 연산을 통해 최대한 중복되지않는 값을 만드는것이다. 좋은 해쉬알고리즘은 가능한한 중복된 값을 최소화 하는 해쉬 알고리즘이다. 때문에 보통 이런 해쉬 자료구조에서의 탐색 시간복잡도는 O(1)의 시간을 갖는다. 하지만 해쉬 알고리즘에 의해 동일한 key가 생성된다면 여러가지 방법으로 이를 처리한다. 대표적인것이 충돌시(중복된 key값을 해쉬에 의해 만들어내는것) 2개의 해쉬알고리즘을 사용하는것이고 두번째는 충돌이 발생할시 이를 순서대로 연결리스트로 저장하는것이다. 다음의 코드는 Integer 타입을 key로하고 Student 객체를 value로 하는 해시맵 자료구조를 사용하여 입력받은 Student 배..
[Java] Java 프로그램 실행 과정과 JVM(Java Virtual Machine) 메모리 구조 프로그래머가 작성한 .java 코드는 JVM이 이해할 수 없는 고수준의 언어이기 때문에 저수준의 언어로 컴파일 과정을 거쳐야한다. ###.java 파일을 컴파일하면 ###.class 파일로 변경되고 이는 "bytecode"라고 불리는 저수준의 실행가능한 기계어로 변경된다.(bytecode 는 JVM이 이해하고 실행 할 수 있다.) 다음은 JVM의 메모리 구조이다 각 영역의 기능은 다음과 같다.Class area(=method area, code area, static area) : 클래스의 필드, 메서드, 타입, 상수풀, static 변수 등의 정보가 저장된다.Stack area : 메서드 호출 시마다 스택 프레임(그 메서드만을 위한 공간)이 생성. 메서드 안에서 사용되어지는 값들 저장(매개변수, 지역변..