본문 바로가기

Computer Science

자료 구조 - Linked List Linked List란?Linked List를 이해하는 가장 쉬운 방법은 '연결'이라는 키워드를 이해하는 것이다. Likned List vs Array ListRAM은 어느 공간에 접근하든 항상 속도가 일정하다. 다만, 주소를 알아야 하기 때문에 찾는 과정이 많다면 Linked List의 경우처럼 a를 찾고b는 어딨니? -> b찾고 -> c는 어딨니? -> c ... 와 같은 작업이 반복되어 속도가 느려진다. 반대로 Array List의 경우 한 라인에 있기 때문에 주소를 묻는 과정이 필요없어 조회속도가 빠르지만 만약 새로운 공간을 사용해야 할 때는 크기를 전부 늘려야 하므로 속도가 오래 걸릴 경우가 있다. 반면, Linked List는 빈 공간 아무 곳에나 추가하면 되기 때문에 속도가 빠르다. 이런 이..
자료 구조 - ArrayList 자바 구현 ArrayList.javapackage list.arraylist.implementation; public class ArrayList { private int size = 0; private Object[] elementData = new Object[100]; public boolean addLast(Object element){ elementData[size] = element; size++; return true; } public boolean add(int index, Object element){ for(int i = size - 1; i >= index; i--){ elementData[i + 1] = elementData[i]; } elementData[index] = element; si..
자료 구조 - List List란?리스트는 수학적으로 유한 수열을 프로그래밍적으로 표현한 것이다. List를 이해하는데 가장 중요한 두 가지는 순서대로 저장된다는 것과 중복을 허용한다는 것이다. Array vs List배열의 경우 인덱스가 매우 중요하다. 인덱스만 알고 있으면 빠르게 데이터에 액세스하여 값을 가져 올 수 있기 때문이다. 리스트의 경우에도 인덱스가 있지만 데이터의 저장 순서가 훨씬 중요하게 여겨진다. 배열의 경우 엘리먼트가 삭제 되었을 때 빈 공간을 남겨두어 메모리 낭비를 초래하지만 리스트는 인덱스의 장점을 버리는 대신 빈틈없는 데이터의 적재라는 장점을 부각시킨 자료 구조이다. 리스트의 기능리스트의 핵심 개념은 순서가 있는 엘리먼트의 모임이라는 것이다. 앞서 말한 빈 엘리먼트가 허용되지 않는다는 점도 중요하다. ..
자료 구조 - Array in Java 자바 배열 생성int[] numbers1 = new int[4]; // 크기는 4이고 type은 int형이며 이름은 numbers1인 array를 생성 String[] strings = new String[4]; // 크기는 4이고 type은 String형이며 이름은 strings인 array를 생성 // numbers1의 index 0, 1, 2 에 각각 값을 초기화 numbers1[0] = 10; numbers1[1] = 20; numbers1[2] = 30; // 만약 생성과 값의 초기화를 한번에 하고 싶다면 int[] numbers2 = {10, 20, 30, 40}; int[] numbers3 = new int[]{10, 20, 30, 40}; // 값을 출력해보자 System.out.print..
자료 구조란 (DATA STRUCTURE) ? 자료 구조란 (DATA STRUCTURE) ?자료 구조에는 크게 두 가지 의미가 있다.첫 번째는 현실을 프로그래밍적으로 표현하는 것.ex)Tree - 조직도, 디렉토리Set - 집합Graph - 지도 두 번째는 큰 데이터를 효율적으로 관리하는 것.컴퓨터 세상은 정리 정돈의 진화라고 할 수 있다.작게는 파일 하나, 폴더, 컴퓨터부터 크게는 그런 문서들이 모아서 한 곳에서 볼 수 있는 WEB까지. 자료 구조를 공부하면서 유념해야 할 점.포기와 유보의 차이.공부하는 과정에서 이해가 안가더라도 잠깐 멈추고 다시 돌아와 반복해도 된다.
컴퓨터의 역사 해당 글은 팀노바 온라인 강의를 이해한 내용을 바탕으로 제 생각을 담아 작성하였습니다. 컴퓨터의 역사를 아는 것은 기초다. 한 언어를 선택하여 Hello World를 출력하는 것이 요즘 교육 방식이라고 하지만 기본적으로 코드가 돌아가는 환경인 하드웨어를 이해하는 것은 굉장히 중요합니다. 하드웨어에 대한 이해가 있으면 컴퓨터가 어셈블리어를 어떻게 이해하고 처리하는지부터 시작하여 컴파일러, 우리가 자주 사용하는 객체 지향 언어가 어떻게 작동하는지를 알 수 있고 이러한 작동 원리를 이해할 수 있는 개발자는 더욱 깊은 프로그래밍이 가능하기 때문이죠. (저는 유치원생 때부터 컴퓨터 하드웨어 커뮤니티 활동을 했을 정도로 좋아합니다. 그냥 좋아요.) 컴퓨터의 시초가 되는 인물들. 찰스 배비지(Charles Babba..