전체 글485 자료구조 - 트리 (tree) 트리형 구조는 개발하면서 많이 보지 못했다. 예에전에 이론 수업때 들었는데, 윈도우 탐색기 부터 지도에서 길찾기나 신호등 로직 등에 쓰이는 것으로 알고있다. 그래프에서도 비슷한 현상이 보이는데 나중에 차이점을 별도로 정리하겠다. 사전적인 의미로 트리(Tree)는 계층적인 자료를 표현하는 데 이용되는 자료구조이다. 트리형 구조이다보니 계층 모델을 띄며, 계층(hierarchy)이 중요한 개념이다. 트리는 노드들로 이루어져 있으며, 그림으로 표시할 때 나무 모양처럼 되어 트리라고 부른다. 트리구조를 배워두면 데이터를 계층 구조로 저장할 때 정리를 편하게 할 수 있다. 트리 자료구조의 구성요소 - 루트 노드(root node): 부모가 없는 노드, 트리는 하나의 루트 노드만을 가진다. - 단말 노드(leaf .. 2022. 9. 13. 자료구조 - LinkedList Linked List는 Array List와는 다르게 엘리먼트와 엘리먼트 간의 연결(link)을 이용해서 리스트를 구현한 것이다. Linked list에서 가장 중요한 것은 연결이 무엇인가를 파악하는 것이다. linked list는 한 건물 내에서 한 회사가 임대한 사무실이 사진처럼 서로 떨어져 있다. 덕분에 직원이 늘어도 큰 걱정이 없습니다. 건물에서 비어있는 곳 아무데나 임대해서 들어가면 되니까. 그런데 방문자가 사무실을 찾는 방법이 비효율적이다. 위의 그림에 있는 방문자가 3번째 사무실을 찾아가려면 우선 첫 번째 화살표의 사무실을 찾아가야 한다. 이 사무실의 직원에게 다음 사무실이 어딘지 물어본다. 그럼 알려주는 사무실로 이동 한 후에 다시 물어봐서 그다음 사무실로 이동한다. 이렇게 물어물어 사무실.. 2022. 9. 12. 자료구조 - Array List 배열을 이용해서 리스트를 만드는 기능 데이터를 추가한다면 다음의 과정을 거친다. 데이터를 삭제한다면 리스트는 빈공간을 허용하지 않으므로 당겨진다. 이는 데이터를 추가하거나 삭제할때 시간이 많이 소요되는 단점을 가지고 있다. 그러나 장점은 데이터를 읽을 때 있다. 해당 주소의 위치나 인덱스 값만 알면 값을 바로 읽어올 수 있다. 리스트와 배열의 적절한 조화로써 사용된다. 2022. 9. 12. 자료구조 - 리스트(list) List는 데이터가 순서대로 저장되며, 중복 데이터 저장을 허용한다. 이는 배열과 매우 비슷하다. 배열은 데이터가 저장된 인덱스, 주소가 중요하며 인덱스, 주소를 가지고 해당 위치로 바로 찾아가 데이터를 볼 수 있다. 그러나 리스트는 인덱스 보다 순서를 더 중요시한다. 차이점을 예시로 들어보면 다음과 같다. ------------------------------------------------------------------------------------------------------------------ 데이터가 [10, 20, 30, 40] 일 경우 배열에서 50을 추가한다면, a[3] = 50 으로 해당 위치에서 값을 덮어쓰거나, a[4] = 50을 추가해야 한다.. 그러나 리스트는 40의 값을.. 2022. 9. 12. 자료구조 - 배열(Array) 배열이란? 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조이다. 같은 타입의 데이터를 여러개 나열한 선형 자료구조로 사용된다. a[0] a[1], a[2] ..... b[0] b[1], b[2]..... C언어에선 포인터 개념으로 배열을 선언하고 안에 데이터를 넣어 저장하는 식이다. 자바에서는 다음처럼 사용한다. int[] number1 = new int[5]; 선언할 자료형에 대괄호 []를 붙여 선언함, new 다음엔 자료형 뒤에 배열의 크기를 지정하여 배열 생성 동적으로 배열의 크기를 늘려야 할 경우 List를 사용하는게 좋다. 2022. 9. 12. 자료구조의 특징 -효율성 -추상화 -재사용성 1. 효율성 자료구조를 사용하는 목적은 효율적인 데이터의 관리 및 사용에 있다. 따라서 적절한 자료구조를 선택하여 사용한다면 효율성이 올라간다. 한가지 예를 들어보자면 검색에 대한 알고리즘을 구현할때, 데이터의 양이 많다면 순차 검색(Linear Search)를 사용하는 것 보다 이분 검색(Binary Search)를 활용하는것이 더 효율 적이다. 왜냐하면 학생이라는 테이블에 학생에 대한 데이터가 100만개 있다고 할때, 순차 검색으로 데이터를 검색하게 되면 운이 좋을때는 1번의 연산으로 찾을 수 있겠지만, 운이 없을경우에는 100만번의 연산을 거쳐야 한다. 이에 반해 이분 검색은 연산의 횟수가 훨씬 줄어들죠. 이와같이 목적에 맞는 자료구조를 사용하는것이 효율적이다. 2. 추.. 2022. 9. 12. 자료구조란? 대학생때 자료구조에 대해 간단하게 배웠는데, 지금와서 보니 코딩테스트를 위해 여러 항목이 추가되며 개선되었다. 때문에 새로이 공부할 필요가 있어 정리하려한다. 자료 구조(data structure) 자료(Data)의 집합의 의미하며, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것 이다. 배열, 리스트, 트리, 그래프, 스택, 큐 같은 것들이 자료 구조의 대표적인 예시들이다. 데이터를 가공하고 활용하는 것의 중요성이 늘어나고 있다보니 자료를 더 효율적으로 저장하고, 관리하기 위해 사용하며, 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있다. 자료구조의 선택 기준 - 자료의 처리 시간 - 자.. 2022. 9. 12. IntelliJ 플러그인 추천 https://teck10.tistory.com/497 [IntelliJ] 플러그인 추천 2인텔리제이로 개발하다보니 플러그인을 설치해서 사용하는 편입니다.IntelliJ 에서 플러그인이란?개발하는데 도움을 받을 수 있는 도구를 말하며, 자동완성, 디자인, 외부 서비스 연동(git 등), 테teck10.tistory.com2탄 보시기 바랍니다. 인텔리제이로 개발하다보니 플러그인을 추가로 설치해야 하는 경우가 있었다.피씨 여러군데에 옮겨다니며 개발하다보니 플러그인 설치 목록을 정리해보려한다.- IntelliJ 에서 플러그인이란?개발하는데 도움을 받을 수 있는 도구를 말하며, 자동완성, 디자인, 외부 서비스 연동(git 등), 테스트에도움을 받을 수 있는 툴 들이며, 업데이트도 주기적으로 제공하므로 업데이트하.. 2022. 9. 12. CI/CD 배포방법 정리 1. Rolling 여러대의 서버가 있을 때 차례대로 배포하는 방법이다. 첫번째 서버가 배포 중이라 역할을 못할 때면 나머지 2개 서버가 대신 부하를 감당하며 서비스를 지속한다. 마찬가지로 나머지 서버들도 배포 중인 서버를 제외한 나머지 서버들이 부하를 감당해준다. * Rolling에서 주의할 점은 하나의 서버가 중단 되었을 때 나머지 서버의 부하량을 잘 파악해야한다. 예를 들어, 100까지 감당 가능한 서버 3대가 있을 때 70,70,70씩 부하를 가지고 있다면, 한개 서버만 다운타임이 생겨도 0,105,105가 되버려서 모든 서비스가 마비가 되버린다. 2. Blue Green 구 버전의 서버와 함께 신 버전의 서버를 준비한다. 신 버전의 서버 준비하는 동안은 구 버전 서버로 트래픽을 흘린다. 그리고 .. 2022. 5. 25. 이전 1 ··· 29 30 31 32 33 34 35 ··· 54 다음