JAVA 28

[알고리즘]Tree, Graph

1. 트리(Tree) 루트(Root)라는 하나의 꼭짓점을 시작으로 간선(edge)으로 연결한다. 각 데이터는 노드(Node)라고 하며, 두 개의 노드가 상하 계층으로 연결되면 부모/자식 관계를 가진다. 트리구조의 특징 깊이(Depth) : 루트로부터 하위 계층의 특정 노드까지의 깊이 레벨(Level) : 같은 깊이를 가지고 있는 노드, 같은 레벨에 나란히 있는 노드를 형제 노드(Sibling Node)라고도 한다. 높이(Height) : 리프 노드를 기준으로 루트까지의 높이 서브트리(Sub tree) :트리 구조를 갖춘 작은 트리 2. 그래프(Graph) 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조 그래프의 구조 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다. 간접..

JAVA/알고리즘 2022.11.30

[알고리즘]Stack, Queue

1. 스택(Stack) LIFO(Last In First Out) or FILO(First In Last Out) 후입선출의 구조이다. 먼저 들어간게 제일 나중에 나온다. 하나의 입출력 방향을 가지고 있다. 예를들어, 인터넷 브라우저의 앞으로가기, 뒤로가기와 같은 기능을 한다. 2. 큐(Queue) LILO(Last In Last Out) or FIFO(First In First Out) 선입선출의 구조이다. 먼저들어간게 제일 먼저 나온다. 두개의 입출력 방향을 가지고 있다. 예를들어, 톨게이트 같이 먼저 계산한 사람이 먼저 출발한다.

JAVA/알고리즘 2022.11.30

[JAVA]재귀함수

재귀? 원래의 자리로 되돌아가거나 되돌아옴. 재귀함수의 장점 불필요한 반복문을 사용하지 않아 코드가 간결하고 수정이 용이하다 변수를 여러개 사용할 필요가 없다 재귀함수의 단점 코드의 흐름을 직관적으로 파악하기 힘들며, 반복문에 비해 메모리를 더 많이 사용한다. 메스드가 종료된 이후에 복귀를 위한 컨텍스트 스위칭 비용이 발생한다. 문제를 작게 쪼개고 더 이상 쪼개지지 않을 때, 가장 작은 단위의 문제를 해결한다.

JAVA 2022.11.30

[JAVA]스트림(Stream)

1. 스트림(Stream) 배열, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자 스트림을 사용하면 List, Set, Map, Array 등 다양한 데이터 소스로부터 스트림을 만들 수 있고, 이를 표준화된 방법으로 다룰 수 있다. 스트림 사용해보기 for문보다 훨씬 간결하고 가독성이 높다. 파이프라인 구성 여러개의 스트림이 연결되어 있는 구조, 최종연산을 제외하고는 모두 중간 연산 스트림이다. 스트림 생성 stream()을 사용하면 해당 Collection의 객체를 소스로 하는 Stream을 반환한다. 또 배열의 원소들을 소스로 하는 Stream을 생성하기 위해서 Stream의 of 메서드, Arrays의 Stream 메서드를 이용한다. 이 때, 주의할 점은 스트림은 데..

JAVA 2022.11.30

[JAVA]람다(Lambda)

1. 람다식(Lambda) 함수형 프로그래밍 기법을 지원하는 자바의 문법요소 코드를 매우 간결하고 명확하게 작성할 수 있는 장점이 있다. 람다식의 기본문법 반환타입과 이름을 생략할 수 있다. 특정조건이 충족되면 람다식을 더 축약하여 사용할 수 있다. 실행문이 하나만 존재하는 경우 중괄호를 생략할 수 있다. 매개변수 타입을 쉽게 유추할 수 있는 경우, 매개변수 타입을 생략할 수 있다. 람다식 요약! 메서드를 간략하게 표현하기 위해 만들어진 것이다. JDK 1.8 함수형 프로그래밍 기법이 도입되었다. 람다식은 익명 객체이다. 함수형 인터페이스를 통해 다룰 수 있다. Stream 사용에 활용된다. 2. 함수형 인터페이스 자바에서 함수형 프로그래밍을 하기 위한 새로운 문법 요소를 도입하는 대신, 기존의 인터페이..

JAVA 2022.11.30