분류 전체보기 38

[Java] 열거형 (enum) 정리

열거형(enum)이란? 여러 상수들을 보다 편리하게 선언할 수 있도록 만들어졌다. 열거형은 서로 연관된 상수들의 집합을 의미한다. 상수란 변하지 않는 값을 의미하며 final 키워드를 사용하여 선언할 수 있다. 열거형은 여러 상수들을 보다 편리하게 선언하고 관리할 수 있으며, 상수 명의 중복을 피하고, 타입에 대한 안정성을 보장한다. 훨씬 더 간결하고 가독성이 좋은 코드를 작성할 수 있다. 열거형 사용 enum 열거형 이름 {상수1, 상수2, ...} enum Seasons { SPRING, SUMMER, FALL, WINTER } enum Seasons { SPRING, //정수값 0 할당 SUMMER, //정수값 1 할당 FALL, //정수값 2 할당 WINTER //정수값 3 할당 } public ..

Language/Java 2022.09.29

[Java] 재귀 함수 (Recursion Function) 정리

재귀 함수(Recursion)란? 특정 함수 내에서 자기 자신을 호출하는 함수이다. 재귀 함수를 잘 활용하면 반복적인 작업을 해야 하는 문제를 좀 더 간결하게 풀어낼 수 있다. public void recursion() { System.out.println("This is"); System.out.println("recursion!"); recursion(); } 재귀 함수 사용 조건 문제의 크기를 점점 작은 단위로 쪼갤 수 있어야 한다. 재귀 호출이 종료되는 시점이 존재해야 한다. 재귀 함수의 장점 불필요하게 여러 개의 반복문을 사용하지 않기 때문에, 코드가 간결해지고, 수정이 용이하다. 변수를 여러 개 사용할 필요가 없다. 재귀 함수의 단점 코드의 흐름을 직관적으로 파악하기 어렵다. 반복하여 메서드를..

Language/Java 2022.09.29

[Java / 자료구조] 이진 탐색 트리 (Binary Search Tree) 정리

이진 탐색 트리 (Binary Search Tree)란? 자식 노드가 최대 두 개인 노드들로 구성된 트리이다. 이 두 개의 자식 노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 나눌 수 있다. 이진 트리는 자료의 삽입, 삭제 방법에 따라 정 이진 트리(Full binary tree), 완전 이진 트리(Complete binary tree), 포화 이진 트리(Perfect binary tree)로 나뉜다 정 이진 트리(Full binary tree) : 각 노드가 0개 혹은 2개의 자식 노드를 갖는다. 완전 이진 트리(Complete binary tree) : 정 이진 트리이면서 완전 이진 트리인 경우이다. 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 가득 채워져 있는 트리이다. 포화 이진 트리(Perfe..

Language/Java 2022.09.28

[Java] Map 정리

Map이란? Map 인터페이스는 키(Key)와 값(Value)으로 구성된 객체를 저장하는 구조를 가지고 있다. 여기서 이 객체를 Entry 객체라고 하는데, 이 Entry 객체는 키와 값을 각각 Key 객체와 Value 객체로 저장한다. Map 인터페이스를 구현한 클래스에는 HashMap, HashTable, TreeMap, SortedMap 등이 있다. Map은 키는 중복 저장될 수 없지만, 값은 중복 저장이 가능하다. 키의 역할이 값을 식별하는 것이다. 만약 저장된 키와 동일한 키로 값을 저장하면, 기존의 값이 새로운 값으로 대치된다. Map 인터페이스를 구현한 클래스에서 공통적으로 사용 가능한 메서드 put(Object key, Object value) 주어진 키로 값을 저장한다. 해당 키가 새로운..

Language/Java 2022.09.28

[알고리즘] 탐욕 (Greedy) 알고리즘

탐욕 알고리즘(Greedy Algorithm)이란? 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법이다. 탐욕 알고리즘은 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 탐욕 알고리즘으로 문제를 해결하는 방법 선택 절차 (Selection Procedure) : 현재 상태에서의 최적의 해답을 선택한다. 적절성 검사(Feasibility Check): 선택된 해가 문제의 조건을 만족하는지 검사한다. 해답 검사(Solution Check): 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로..

[알고리즘] 시간복잡도 (Time Complexity) 개념 정리

시간 복잡도 문제를 해결하기 위해 알고리즘의 로직을 코드로 구현할 때 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가를 의미한다. 시간 복잡도 표기법 Big - O (빅 - 오) Big - Ω (빅 - 오메가) Big - θ (빅 - 세타) 위 세 가지 표기법은 각각 최악, 최선, 평균의 경우에 대하여 나타내는 방법이다. 이 중 Big - O 표기법이 가장 자주 사용된다. Big - O 표기법은 최악의 경우를 고려하기 때문에 프로그램이 실행되는 과정에서 소요되는 최악의 시간까지 고려할 수 있다. O(1) Constant complexity라고 하며, 입력값이 증가하더라도 시간이 늘어나지 않는다. 입력값의 크기와 상관없이, 즉시 출력값을 얻어낼 수 있다는 의미이다. pu..

[Java / 자료구조] 그래프 (Graph) 정리

그래프(Graph) 그래프는 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다. 그래프의 구조 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다. 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다. 하나의 점을 그래프에서는 정점(vertex)라고 표현하고 하나의 선은 간선(edge)라고 한다. 그래프의 표현 방식 인접 행렬 두 정점을 바로 이어주는 간선이 있다면 두 정점은 인접하다고 이야기한다. 인접 행렬을 서로 다른 정점들이 인접한 상태인지를 표시한 행렬로 2차원 배열의 형태로 나타낸다. 만약 A라는 정점과 B라는 정점이 이어져 있다면 1(true), 이어져 있지 않다면 0(false)으로 표시한 일종의 표이다. to 1 2 3 4 5 6 1 0 1 0 0 1 0 2..

Language/Java 2022.09.26

[Java] StringBuilder와 StringBuffer 정리

StringBuilder 한번 생성된 String 클래스의 인스턴스는 여러 개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야 한다. 만약 100만개의 문자열이 있는데 모두 더하는 작업이 필요하다면 인스턴스 생성과정이 100만번 이루어져야 하기 때문에 매우 비효율적이다. 그래서 StringBuilder를 사용한다. StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("문자열 ").append("연결"); String str = stringBuilder.toString(); System.out.println(stringBuilder); System.out.println(str); /* 출력 문자열 연결 문자열 연결 */ 먼저 ..

Language/Java 2022.09.26

[Java / 자료구조] 트리 (Tree) 정리

트리(Tree)란? Tree는 이름 그대로 나무를 거꾸로 뒤집어 놓은 형태를 가지고 있다. 그래프의 여러 구조 중 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태이다. 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조이다. 데이터를 순차적으로 나열시킨 선형 구조가 아니라, 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 아래로만 뻗어나가기 때문에 사이클이 없다. 트리 구조는 루트(root)라는 하나의 꼭짓점 데이터를 시작으로 여러 개의 데이터를 간선(edge)으로 연결한다. 각 데이터를 노드(Node)라고 하며, 두 개의 노드가 상하 계층으로 연결되면 부모/자식 관계를 가진다. A는 B와 C의 부모 노드(Parent No..

Language/Java 2022.09.26

[Java] StringTokenizer 클래스 정리

StringTokenizer StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개 주는 클래스이다. 그렇게 쪼개어진 문자열을 토큰(token)이라고 부른다. 이 클래스를 사용하기 위해서는 java.util.StringTokenizer를 import 해야 한다. import java.util.StringTokenizer; public class Main { public static void main(String[] args) { String str = "This is a string example using StringTokenizer"; StringTokenizer tokenizer = new StringTokenizer(str); System.out.println(str)..

Language/Java 2022.09.26
반응형