[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류
·
Java/알고리즘 & 자료구조
해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다.  1) 완전 탐색(Exhaustive Search)💡 완전 탐색(Exhaustive Search)이란?- ‘모든 가능한 경우의 수를 탐색’하여 ‘최적의 결과를 찾는 방법’을 의미합니다.- 모든 가능성을 고려하기 때문에 항상 최적의 해를 찾을 수 있지만 경우의 수가 매우 많은 경우 시간과 메모리의 부담이 커질 수 있습니다. 그렇기에 문제의 특성에 따라 다른 탐색 기법을 사용하는 것이 좋습니다.  2) 완전 탐색의 종류 💡완전 탐색의 종류- 탐색 알고리즘 중에서 '완전 탐색'에 대해 이해하고 각각의 탐색 종류에 대해서 이해합니다.알고리즘 종류설명장점단점브루트 포스‘모든 ..
[Java/자료구조] 선형 배열(Linear Array) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 선형 배열에 대해 이해를 돕기 위해 작성한 글입니다. 1) 선형 배열(Linear Array)💡 선형 배열(Linear Array) 이란? - 데이터 요소들이 ‘일렬로 연결되어 있는 배열’을 의미합니다. - 각 요소들은 인덱스라는 고유한 숫자로 식별되며 배열을 선언할 때 각 요소에 데이터 타입과 배열의 길이를 지정해야 합니다. [ 더 알아보기 ] 💡 비선형 배열(Non-Linear Array) - 데이터를 일렬로 나열하지 않고, 특정한 규칙에 따라 구조를 형성하는 배열을 의미합니다. - 대표적인 비선형 배열로는 트리(tree)와 그래프(graph)가 있습니다. 트리는 부모-자식 관계를 가진 노드들이 연결된 구조이며, 그래프는 노드와 간선(edge)으로 이루어진 구조입니다. 2)..
[Java/알고리즘] 재귀 함수(Recursion Function) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 재귀함수에 대해 이해하며 다양한 예시와 재귀함수를 이용한 알고리즘을 기반으로 이해를 돕기 위해 작성한 글입니다. 1) 재귀함수(Recursion Function)💡 재귀함수(Recursion Function)란? - 함수 내부에서 ‘자기 자신을 호출’하는 함수를 의미합니다. 이를 통해서 함수가 자신을 반복적으로 호출하면서 원하는 결과를 도출할 수 있습니다. - 단, 재귀함수를 사용하는 경우 함수 호출이 계속해서 쌓이기 때문에 호출 스택이 많아져서 성능이 저하될 수 있습니다. 따라서 재귀함수를 작성할 때는 무한루프에 빠지지 않도록 종료 조건을 명확하게 설정해주어야 합니다. [ 더 알아보기 ] 💡 호출 스택(Call Stack)이란? - 프로그램에서 함수나 메서드를 호출할 때 해당 함수나 메서..
[Java/알고리즘] 선형 탐색(Linear Search) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 선형 탐색에 대해 이해를 돕기 위해 작성한 글입니다.   1) 선형 탐색(Linear Search)💡 선형 탐색(Linear Search) 이란?- 배열이나 리스트의 ‘처음부터 끝까지 하나씩 값을 비교하면서 찾는 값을 찾을 때’까지 탐색하는 방법입니다.- 선형 탐색의 경우 '정렬이 되지 않은 상태'의 배열/리스트에서 값을 찾기 위한 탐색에 사용합니다.(* 이진 탐색과 비교가 되며 정렬이 된 상태에서 사용하는 이진 탐색과 사용되는 방식이 다릅니다) [ 더 알아보기 ]💡 이진 탐색(Binary Search) 란?- ‘정렬된 배열’에서 ‘특정 값’을 찾는 알고리즘을 의미합니다.- 해당 탐색 방식은 정렬이 된 배열에서 사용이 됩니다.  💡 [참고] 아래의 글을 참고하시면 이진탐색..
[Java/API] HashMap Method API Document : Java 11
·
Java/API Document
해당 글에서는 Java 11 버전을 기준으로 Map 인터페이스를 구현한 클래스인 HashMap의 메서드의 API에 대해서 확인합니다. 1) Map 💡 Map 이란? - key와 value를 저장하는 자료구조이며 ‘인터페이스’를 의미합니다.key는 중복될 수 없고, value는 중복될 수 있습니다. 💡HashMap이란? - Map 인터페이스를 구현한 클래스 중 하나로 ‘구현체’를 의미합니다. - Hashing 기법을 사용하여 key와 value를 저장하고, 검색 속도가 빠르다는 장점이 있습니다. - 또한, null key와 null value를 모두 허용한다는 점도 HashMap의 장점 중 하나이다. [ 더 알아보기 ] 💡 해싱 기법(Hashing) - 데이터를 고정된 길이의 값으로 변환하는 알고리즘입니다..
[Java/API] ArrayList Method API Document : Java 11
·
Java/API Document
해당 글에서는 Java 11 버전을 기준으로 List 인터페이스를 구현한 클래스인 ArrayList의 메서드의 API에 대해서 확인합니다. 1) List / ArrayList 💡 List 란? - 순서가 있는 데이터 집합을 나타내는 ‘인터페이스’입니다. - List는 중복된 요소를 허용하며 인덱스를 사용하여 요소에 접근할 수 있습니다. 💡 ArrayList란? - List 인터페이스를 구현한 클래스 중 하나로 ‘구현체’입니다. - 내부적으로 동적 배열로 구현되어 있으며 요소를 추가하거나 삭제할 때마다 크기를 자동 조절합니다. - 배열과 유사한 방식으로 인덱스를 사용하여 요소에 접근 할 수 있습니다. // List 선언 및 초기화 List list = new ArrayList(); // ArrayList ..
[Java/Short] 배열/리스트의 요소를 원하는 개수만큼 재 구성 방법
·
Java/Short 개발
해당 글에서는 배열/리스트를 원하는 개수만큼 묶어서 재 구성을 하는 방법에 대해서 공유합니다. 고정된 사이즈 혹은 순차적인 개수로 묶습니다. 1) 배열의 요소를 원하는 개수만큼 배열로 재구성 방법 1. 지정한 크기의 인덱스로 재 구성 방법 💡 해당 방법은 요소가 총 6개인 배열이 있다고 가정하였을 때, 첫 번째는 인덱스 0, 1, 2를 하나의 묶음으로 하고 두 번째는 3, 4, 5를 하나의 묶음으로 하는 배열로 재구성을 위한 방법입니다. 💡 아래의 예시를 통해서 해당 방법에 대해 익힙니다. 1.1. 재구성한 배열의 요소의 합을 구하는 방법 💡 해당 예시에서는 순회하면서 k 만큼 묶는 방법을 의미합니다. 💡 아래에서는 배열에서 0, 1, 2번 요소를 한 묶음으로 하고 3, 4, 5번을 한 묶음으로 하여 묶..
[Java/Short] 문자열을 배열로 변환 방법 : String to String[], char[]
·
Java/Short 개발
해당 글에서는 문자열을 문자열 배열 혹은 문자 배열로 변환 방법에 대해서 확인해봅니다. 1) 구분자(delimiter) 💡 구분자(delimiter) 란? - 문자열을 나누는 기준이 되는 문자를 말합니다. - 예를 들어, "apple,banana,kiwi"와 같은 문자열을 쉼표(,)를 구분자로 사용하여 "apple", "banana", "kiwi"로 나눌 수 있습니다. 2) 구분자(delimiter)가 포함되지 않은 문자열 1. split()를 이용한 방법 : String to String[] 💡 split() 메서드를 이용하여서 ‘구분자(delimiter)’에 따라서 배열로 변환합니다. String alphabet = "abcdefg"; String[] alphabetArr = alphabet.spli..
[Java/Short] 배열, 리스트를 문자열로 변환 방법 : Array, List to String
·
Java/Short 개발
해당 글에서는 값이 존재하는 배열이나 리스트 내용을 하나의 문자열로 변환하는 방법에 대해서 확인해봅니다. 1) String.join()를 이용한 방법 💡 String.join 함수를 이용하여서 Array, List를 문자열로 변환하는 예시입니다. // List to String List list = new ArrayList(); list.add("Java"); list.add("List"); list.add("String"); String resultList = String.join("", list); System.out.println(resultList); // "JavaListString" // Array to String String[] arr = {"java", "List", "String"}; ..
[Java/알고리즘] 시간 복잡도, 공간 복잡도, 빅오 표기법 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 효율적인 알고리즘에 대한 설계 및 구현방법과 관련된 시간 복잡도와 공간 복잡도를 이용하며 이를 표기하는 빅오 표기법에 대해서 이해를 돕기 위해 작성한 글입니다. 1) 시간 복잡도(Time Complexity)💡 시간 복잡도(Time Complexity) - 알고리즘이 실행될 때 필요한 ‘입력 값’과 ‘연산 수행 시간’에 따라 ‘효율적인 알고리즘’을 나타내는 척도를 의미합니다. - 즉, 입력 값이 커질수록 알고리즘의 수행 시간이 어떻게 증가하는지에 따른 지표를 의미합니다. - 시간 복잡도는 ‘빅오 표기법(Big-O notation)’를 통해 표현하며, ‘수치가 작을수록 효율적인 알고리즘’을 의미합니다. 2) 공간 복잡도(Space Complexity)💡 공간 복잡도(Space Complexi..