분류 전체보기 썸네일형 리스트형 커뮤니케이션 스터디 발표 자료(재귀함수) 재귀함수의 개념 문제를 해결하는 알고리즘을 구현할 때 사용 함수가 자기 자신을 호출하는 방식으로 동작 전체 문제를 작은 부분의 문제로 나누고 반복 호출을 통해 모든 부분을 해결 재귀함수의 특징 기본 조건 : 재귀함수를 통해 해결하고자 하는 작은 부분 문제들은 해답이 존재해야 한다. 기본 조건이 충족되면 재귀 호출을 중단하고 결과를 반환한다. 부분 기본 조건의 합인 최종 기본 조건을 충족하면 전체 문제의 결과를 얻을 수 있다. 종료 조건 : 기본 조건을 충족한 재귀함수를 종료하기 위한 조건을 설정한다. 재귀함수 내부에서 자기 자신을 호출한다. 기본적으로 반복문보다 직관적이지 않은 구조를 띄고 있으나, 일부 알고리즘에서는 보다 직관적이고 간편한 구현이 가능하다. 예시 : Factorial 계산, Fibona.. 더보기 어떤 백엔드 개발자가 될 것인가 백엔드 개발자는 소프트웨어 개발 과정에서 중요한 역할을 수행한다. 사용자는 UI를 통해 서버 컴퓨터와 요청, 응답을 주고받는다. 백엔드 개발자는 사용자의 요청이 올바르게 적용되고 이를 바탕으로 원하는 응답값이 반환될 수 있도록 서버에서 데이터베이스를 조작하고, 비즈니스 로직을 통해 웹 애플리케이션의 핵심 기능을 제공한다. 어떤 기능을 어떻게 제공하느냐에 따라 사용자의 삶의 질은 크게 영향을 받게 된다. 따라서 단순히 백엔드 개발자가 되는 것보다 중요한 것은 어떤 백엔드 개발자가 되느냐의 문제일 것이다. 백엔드 개발자로서 내가 추구하는 역량에 대해 정리해 보았다. 효율적인 성능 관리 백엔드 개발자에게 안정성과 확장성은 중대한 이슈다. 어떤 백엔드 개발자가 개발하느냐에 따라 소프트웨어의 성능과 개발/유지비용.. 더보기 객체지향의 사실과 오해 스터디 2장 발표 자료 02 이상한 나라의 객체 목차 02 이상한 나라의 객체 객체지향과 인지 능력 객체, 그리고 이상한 나라 이상한 나라의 앨리스 앨리스 객체 객체, 그리고 소프트웨어 나라 상태 행동 식별자 기계로서의 객체 행동이 상태를 결정한다 은유와 객체 두 번째 도시전설 의인화 은유 이상한 나라를 창조하라 02 이상한 나라의 객체 서문 아기들 역시 세상을 객체들의 집합으로 바라본다. 즉, 인간의 객체지향성은 선천적인 것이다. 객체지향과 인지 능력 인간은 객체지향적으로 세상을 이해한다. 따라서 실제 세상의 객체를 중심으로 소프트웨어에서의 객체를 이해하는 과정이 수월하다. 객체는 구분할 수 있는 개념 또는 사물이며, 실세계는 소프트웨어와 마찬가지로 객체들로 가득하다. 인간은 복잡한 세상을 이해하기 위해 본능적으로 세상을 분.. 더보기 Heap 구조의 이해 Heap의 개념 Heap은 트리 구조 기반의 자료구조로서 일반적으로 배열로 구현되며, node 번호와 배열의 index가 일치한다. 최댓값 또는 최솟값을 빠르게 찾는 데 사용된다. Heap은 추출 과정을 통해 최댓값 또는 최솟값을 삭제하고 반환하며, 추출 이후에도 Heap의 구조를 유지해야 한다. 또한 삽입 과정을 통해 마지막 node에 새로운 값을 삽입하며, 마찬가지로 Heap의 구조를 유지한다. 최댓값을 가지는 Heap은 max heap, 최솟값을 가지는 Heap은 min heap이라고 한다. max heap의 경우 부모 node의 우선순위가 자식 node의 우선순위보다 항상 크거나 같다. 반대로 min heap의 경우 부모 node의 우선순위가 자식 노드의 우선순위보다 항상 작거나 같다. 최상위 n.. 더보기 Linked List 구조의 이해 Linked List의 개념 Linked List는 데이터를 저장하는 자료구조로, 각각의 데이터들은 노드(Node)라는 객체로 구성된다. node는 data와 다음 노드를 가리키는 pointer로 이루어져 있다. data의 저장과 조작에 index를 활용하는 Array나 Array List와는 달리, 앞 Linked List는 앞 뒤 data의 주소(pointer)를 통해 저장과 조작을 수행한다. 이러한 구조는 Linked List가 삽입, 삭제 과정에서 시간 복잡도상 유리함(O(1))을 가지게 해 주지만, data의 검색과 변경에서는 취약함(O(N), 빅오 표기법 기준)을 보인다. 또한 Array와 달리 객체 생성 시점에 data가 저장될 길이를 미리 할당할 필요가 없으며, 동적 크기를 가지므로.. 더보기 Hash Map 구조의 이해 Hash Map의 개념 Hash Map 자료구조는 key-value 쌍을 저장할 때 사용하는 방법 중 하나로서, 빠른 검색 속도와 효율적인 메모리 사용의 장점으로 인해 자주 사용된다. Hash Map은 객체 식별을 위해 hashcode() 메소드와 equals() 메소드를 이용한 동등 비교를 수행한다. hashcode() 메소드를 통해 각 key에 대해 고유한 hashcode를 생성하고, 이 값을 배열의 index로 사용하여 데이터를 저장한다. 이후 검색을 할 때에도 hashcode() 메소드를 통해 key를 hashcode로 변환하여 index를 찾고, 해당 index에 저장된 데이터를 찾아서 반환한다. 해당 과정은 O(1)의 시간 복잡도로 이루어지기 때문에 매우 빠른 검색 속도를 보장하는 장점이 있다.. 더보기 배열(Array) 구조의 이해 Array의 개념 Array는 저장해야 할 값이 많고, 그 값들의 type이 같은 유형인 경우 사용하는 자료구조이다. 따라서 하나의 Array에 각기 다른 여러 type의 value들을 담을 수 없다. Array의 값들은 index를 통해서 접근할 수 있으므로, Linked List와 달리 value의 검색과 변경의 속도가 빠르다(시간 복잡도 O(N) = 1). Array List와 같은 시간 복잡도를 가지지만 Array List는 길이가 고정되어 있지 않아 value의 추가, 삭제가 자유롭다. 하지만 Array는 primitive type으로서 object type인 List에 비해 작업의 속도가 빠르므로, Array List로 완전히 대체할 수는 없다. 실제 Array와 Array List가 자주 쓰.. 더보기 큐(Queue) 구조의 이해 Queue의 개념 큐(Queue)는 데이터를 일렬로 저장하고, 반대편에서 순서대로 처리되는 선형 자료구조이다. 큐에 삽입된 데이터는 일종의 대기열로 생각할 수 있으며, 먼저 도착한 데이터가 먼저 처리되는 선입선출법(FIFO, First In - First Out)의 구조를 가진다. Stack과 반대되는 구조라고 할 수 있다. Queue 구조에서의 명칭 한쪽에서 데이터를 삽입하는 것을 Enqueue, 반대편에서 삭제하는 것을 Dequeue라고 한다. 각각 Enqueue는 offer와 add 메소드, Dequeue는 poll과 remove 메소드를 이용한다. 추가로 front 메소드는 첫 번째 요소를 삭제하지 않고 반환한다. Queue의 응용 Java에서의 활용 예시 Queue queue = new Link.. 더보기 이전 1 2 3 4 5 6 ··· 9 다음