Java
-
[알고리즘] 이진탐색Java 2024. 7. 10. 13:25
이진탐색이란?- 정렬된 배열에서 특정 값을 찾는 알고리즘- 이진탐색은 탐색 범위를 절반씩 줄여나가기 때문에 선형탐색에 비해 빠른 속도를 보장합니다. 하지만 배열이 정렬되어 있어야 한다는 조건이 필요하기 때문에 배열이 정렬되어 있지 않은 경우에는 정렬 작업이 필요합니다. 선형탐색이란?- 배열(Array)이나 리스트(List)와 같은 데이터 구조에서 특정한 값을 찾는 알고리즘 중 하나입니다. 이진탐색 과정1. 배열의 중간 값을 선택하여 찾고자 하는 값과 비교합니다.2. 만약 중간 값이 찾고자 하는 값보다 크면 '배열 왼쪽 부분'에서 탐색을 진행하고, 값보다 작으면 '배열 오른쪽 부분'에서 탐색을 진행합니다.3. 이 과정에서 찾고자 하는 값이 나올 때까지 반복합니다. 이진 탐색과 for문(선형 탐색)의 차이점..
-
[알고리즘] 재귀Java 2024. 7. 3. 19:11
재귀란?재귀란 메서드 호출을 이용한 방법으로 하나의 메서드 내에서 자기 자신을 호출하도록 하여 반복적인 개념을 구현하는 것입니다. 재귀함수란?배열 arr에서 2개의 원소를 조합해야 한다고 하면 아래와 같이 이중 반복문을 이용할 수 있습니다.3개의 원소를 조합해야 한다면요?4개, 5개의 원소를 조합한다고 하면요?그래서 나온 것이 재귀함수, 즉 함수 내부에서 자기 자신을 호출하는 함수입니다. 재귀의 최대 범위와 한계점재귀 호출이 중간에 종료되지 않고 너무 깊게 들어가 버리면 변수들이 메모리를 모두 할당해서 StackOverflowError 예외가 발생합니다. 이런 예외를 피하기 위해서는 재귀 호출의 깊이를 안전하게는 10,000 이하로, 아무리 많아도 20,000 이하로 유지시켜야 합니다. 재귀 정의하기상태..
-
[알고리즘] 시간 복잡도Java 2024. 7. 3. 17:52
시간 복잡도란?- 코드의 실행 시간이 어떤 요인으로 결정되는지 나타내는 시간과 입력 데이터의 함수 관계 → 쉽게 말해, 알고리즘이 처리하는 입력 크기와 실행 시간 간의 상관관계입니다.- 알고리즘이 입력 크기에 따라 처리하는 데 걸리는 시간의 증가율을 나타내는 지표 시간 복잡도 조건1. 최선, 평균, 최악의 경우를 모두 고려해야 합니다.→ 최악의 경우로 생각하고 푸는 것을 권장합니다. 2. 입력값의 크기를 고려해야 합니다.→ 일반적으로 입력값이 크면 클수록 알고리즘의 실행 시간은 증가합니다. 3. 기본 연산의 실행 횟수를 계산해야 합니다.→ 기본 연산이란 알고리즘이 수행하는 가장 기본적인 연산을 말합니다.→ 배열에서 최솟값을 찾는 알고리즘이 있다면, 기본 연산은 배열에서 값을 비교하는 연산입니다. 4...
-
추상클래스 + 배열 예제 문제 풀이Java 2024. 6. 25. 15:24
package com.javaex.problem04;public abstract class Shape { int countSides; // 변의 갯수 public Shape(int countSides) { this.countSides = countSides; } public int getCoundSides() { return countSides; } abstract double getArea(); // 넓이 구하기 함수 abstract double getPerimeter(); // 둘레 구하기 함수 }Shape.java package com.javaex.problem04;public class RectTriangle extends Shape { double w; double h; publi..