CS/Data Structure

    배열(Array) vs 연결리스트(Linked List) | 차이점 비교 및 사용 이유

    배열(Array) vs 연결리스트(Linked List) | 차이점 비교 및 사용 이유

    1. 배열 (Array) 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 자료구조 순차적으로 저장되어 메모리 주소가 1씩 차이나는 것을 볼 수 있다. 이와 같은 특징 덕분에 index를 사용할 수 있다. 즉, 배열의 장점은 시작 주소만 알면 index를 활용해 쉽게 탐색이 가능하다는 것이다. ✨특징 정적(static)인 자료구조 배열을 선언할 때 크기와 데이터 타입을 지정 (e.g. int arr[10] , String arr[5]) 크기 수정 불가 배열 크기 이상의 데이터 저장 불가 ⇒ 최대 사이즈를 알 수 없을 때는 사용하기에 부적합 처음에 정한 크기만큼 연속된 메모리 주소를 할당 메모리상에 연속적으로 저장 = 논리적 저장 순서와 물리적 저장 순서가 일치 ⇒ index로 해당 원소(elemen..

    [자료구조] 큐 (Queue) - 프린터 with Javascript

    [자료구조] 큐 (Queue) - 프린터 with Javascript

    해당 문제는 코드스테이츠의 Toy problem을 출처로 합니다. 문제 김코딩은 최근 인쇄할 일이 많이 생겨 창고에서 안 쓰던 프린터를 꺼냈습니다. 이 프린터의 성능을 테스트하여 새로운 프린터를 장만할지 결정하려고 합니다. 김코딩은 프린터의 인쇄 작업 목록의 크기와 최대 용량을 가정하고 각기 다른 용량의 문서를 차례대로 인쇄하여 모든 문서가 인쇄되는데 최소 몇 초가 걸리는지 테스트하기로 했습니다. 프린터 인쇄 작업 목록의 제한사항은 다음과 같습니다. [제한사항] 인쇄 작업 목록은 칸으로 이루어져 있습니다. 각 칸에는 한 개의 문서만 위치할 수 있습니다. 문서는 1초에 한 칸만 이동할 수 있습니다. 인쇄 작업 목록의 크기는 bufferSize이고 최대 용량 capacities 만큼 문서를 담을 수 있습니다..

    [자료구조] 큐 (Queue) - 박스포장 with Javascript

    해당 문제는 코드스테이츠의 Toy problem을 출처로 합니다. 문제 마트에서 장을 보고 박스를 포장하려고 합니다. 박스를 포장하는 데는 폭이 너무 좁습니다. 그렇기에 한 줄로 서 있어야 하고, 들어온 순서대로 한 명씩 나가야 합니다. 불행 중 다행은, 인원에 맞게 포장할 수 있는 기구들이 놓여 있어, 모두가 포장을 할 수 있다는 것입니다. 짐이 많은 사람은 짐이 적은 사람보다 포장하는 시간이 길 수밖에 없습니다. 뒷사람이 포장을 전부 끝냈어도 앞사람이 끝내지 못하면 기다려야 합니다. 앞사람이 포장을 끝내면, 포장을 마친 뒷사람들과 함께 한 번에 나가게 됩니다. 만약, 앞사람의 박스는 5 개고, 뒷사람 1의 박스는 4 개, 뒷사람 2의 박스는 8 개라고 가정했을 때, 뒷사람 1이 제일 먼저 박스 포장을..

    [자료구조] 큐 (Queue) - 정의, 특징, 그리고 자바스크립트로 구현하기

    [자료구조] 큐 (Queue) - 정의, 특징, 그리고 자바스크립트로 구현하기

    Queue의 정의 줄을 서서 기다리다, 대기 행렬 데이터(data)를 입력된 순서대로 처리할 때 주로 사용하는 자료구조 Queue의 특징 FIFO (First In First Out) = LILO (Last In Last Out) 먼저 들어간 데이터가 먼저 나오는 자료구조 일상생활의 예시 명절에는 고향으로 가기 위해 많은 자동차들이 고속도로를 지납니다. 고속도로에는 톨게이트가 있고, 자동차는 톨게이트에 진입한 순서대로 통행료를 내고 톨게이트를 통과합니다. 톨게이트: Queue 자료구조 자동차: 데이터(data) Queue의 실사용 예제 컴퓨터와 연결된 프린터에서 여러 문서를 순서대로 인쇄 순서 문서를 작성하고 출력 버튼을 누르면 해당 문서는 인쇄 작업 (임시 기억 장치의) Queue에 들어갑니다. 프린터..

    [자료구조] 스택 (Stack) - 브라우저 뒤로가기 앞으로가기 with Javascript

    해당 문제는 코드스테이츠의 Toy problem을 출처로 합니다. 문제 개발자가 되고 싶은 김코딩은 자료구조를 공부하고 있습니다. 인터넷 브라우저를 통해 스택에 대해 검색을 하면서 다양한 페이지에 접속하게 되었는데 "뒤로 가기", "앞으로 가기"를 반복하면서 여러 페이지를 참고하고 있었습니다. 그런데 새로운 페이지를 접속하게 되면 "앞으로 가기" 버튼이 비활성화돼서 다시 보고 싶던 페이지로 갈 수 없었습니다. 이러기를 반복하다가 김코딩은 스택 자료구조를 떠올리게 되었습니다. 브라우저에서 "뒤로 가기", "앞으로 가기" 기능이 어떻게 구현되는지 궁금해진 김코딩은 몇 가지 조건을 아래와 같이 작성하였지만, 막상 코드를 작성하지 못하고 있습니다. 조건 새로운 페이지로 접속할 경우 prev 스택에 원래 있던 페..

    [자료구조] 스택 (Stack) - 정의, 특징, 그리고 자바스크립트로 구현하기

    [자료구조] 스택 (Stack) - 정의, 특징, 그리고 자바스크립트로 구현하기

    Stack의 정의 쌓다, 쌓이다, 포개지다 데이터(data)를 순서대로 쌓는 자료구조 Stack의 특징 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근 LIFO (Last In First Out) = FILO (First In Last Out) 먼저 들어간 것이 가장 나중에 나오는 자료구조 일상생활의 예시 다섯 대의 자동차가 순서대로 좁은 골목을 지나고 있습니다. 좁은 골목에 진입한 차량은 곧 맞이할 미래를 모르고 있지만, 이 골목의 끝은 막혀 있습니다. 첫 번째 자동차는 이 골목을 통과하기 위해 직진했고, 나머지 자동차도 앞 자동차의 꽁무니를 따라 직진했습니다. 그러나 첫 번째 차량이 막다른 길을 맞이했습니다. 마지막으로 들어온 다섯번 째 자동차가 먼저 후진하여 나와야 하는 상황이 되어버린 겁니다..