스택 (Stack) /큐 (Queue) 스택과 큐는 각각 한쪽 끝에서만 데이터를 추가하고 제거하는 자료구조 데이터를 저장하고 관리하는 방식에 차이가 있음 스택 (Stack) 스택의 특징 LIFO (Last In, First Out) : 마지막에 추가된 요소가 먼저 제거 데이터를 넣는 작업을 푸시 (Push) 데이터를 빼는 작업을 팝 (Pop) 스택의 동작 스택의 최상단에 요소를 추가하거나 최상단에 요소를 제거할 수 있음 주로 함수 호출이나 재귀 알고리즘 등에 사용 스택의 예 import java.util.Stack; public class StackExample { public static void main(String[] args) { // 정수를 저장하는 스택 생성 Stack stack = new S..
분류 전체보기
해시 (Hash) Hash는 데이터를 저장하는 자료 구조 중 하나로, 특정한 함수를 사용하여 데이터를 일정한 크기의 고정된 값으로 변환하는 과정을 말합니다. 이렇게 변환된 값은 보통 “해시 코드” or “해시 값” 이라고 불립니다. 해시 함수는 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 특징이 있습니다. 해시 함수(Hash Fuction) 해시 함수는 주어진 입력에 대해 항상 동일한 해시 코드를 생성하며, 입력 데이터가 조금만 다르더라도 해시 코드가 크게 달라져야 합니다. 이러한 특성을 가진 해시 함수를 “고르게 분포되었다” 고 말합니다. 해시 함수 종류 MD5, SHA-1, SHA-256 등 특정한 용도나 특성에 맞게 다양한 종류가 존재한다. 그 중 3가지 만 간략하게 설명하겠습니다. 1...
제곱근과 합성수 간의 관계 제곱근과 합성수 간의 관계는 다음과 같습니다: 1. **제곱근과 소수 판별:** - 만약 어떤 자연수 `n`이 합성수라면, `n`의 어떤 약수는 `n`의 제곱근보다 작거나 같을 것입니다. - 예를 들어, `n`이 합성수이고 `a`가 `n`의 약수라면, `a * b = n`을 만족하는 다른 자연수 `b`가 존재합니다. - 만약 `a`와 `b` 중 하나가 `n`의 제곱근보다 작다면, 다른 하나는 반드시 제곱근보다 큽니다. 2. **소수와 합성수:** - 소수는 1과 자기 자신 이외에 약수를 갖지 않는 수입니다. - 합성수는 1과 자기 자신 이외에도 다른 약수를 갖는 수입니다. - 어떤 수가 소수가 아니라면, 반드시 합성수여야 합니다. 3. **소인수 분해:** - 어떤 수가 합성수..
정수 오버플로우 정수 오버플로우는 정수 변수가 표현할 수 있는 범위를 넘어서 값을 저장하려고 할 때 발생하는 현상입니다. 정수 데이터 타입(예: `int`, `long` 등)은 특정 비트 수로 값을 표현하므로, 표현 가능한 최대값을 넘어가면 오버플로우가 발생합니다. 예시 1. `int`의 경우: int maxValue = Integer.MAX_VALUE; // 2147483647 // 정상적인 범위 내의 덧셈 int sum1 = maxValue + 1; // -2147483648 (Integer.MIN_VALUE) // 정상적인 범위 내의 뺄셈 int subtract1 = Integer.MIN_VALUE - 1; // 2147483647 (Integer.MAX_VALUE) 2. `long`의 경우: lo..
BigInteger `BigInteger`는 Java에서 정수의 임의 정밀도(arbitrary-precision)를 가지는 클래스입니다. 이 클래스는 매우 큰 크기의 정수를 표현할 수 있어서, int나 long의 범위를 초과하는 정수 연산을 지원합니다. BigInteger 클래스 `BigInteger` 클래스는 java.math 패키지에 속해 있으며, 여러 연산을 지원합니다. 주요 메서드 중 일부는 다음과 같습니다: 1. `add(BigInteger val)`: 현재 `BigInteger` 객체에 주어진 `BigInteger` 값을 더합니다. 2. `subtract(BigInteger val)`: 현재 `BigInteger` 객체에서 주어진 `BigInteger` 값을 뺍니다. 3. `multiply(B..
조합(Combination) 4개의 원소 중에서 2개를 선택하여 나열하는 경우의 수를 계산하는 것은 순열의 일종입니다. 조합(Combination)의 경우에는 순서가 중요하지 않으므로, 조합의 수는 다음과 같이 계산됩니다. 따라서, 4개의 원소 중에서 2개를 선택하여 나열하는 경우의 수는 6가지입니다.
순열(Permutation) 순열(Permutation)은 주어진 집합에서 원소들을 선택하여 나열하는 모든 가능한 경우의 수를 나타냅니다. 예를 들어, 1, 2, 3이라는 세 개의 숫자가 주어졌을 때, 가능한 순열은 (1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1) 등이 됩니다. 순열은 순서가 중요하며, 각각의 원소가 한 번씩만 나타나야 합니다. n개의 원소에서 r개를 선택하여 나열하는 경우의 수를 나타내는 공식은 다음과 같습니다. 순열의 계산은 조합과 비슷하지만, 순서가 중요하다는 차이가 있습니다. 따라서 조합은 선택한 원소들의 순서가 상관없는 경우의 수를 나타내고, 순열은 선택한 원소들의 순서가 상관 있는 경우의 수를 나타냅니다.
Java 정규 표현식(Regular Expression) : 컴퓨터 과학의 정규 언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 언어 전화번호, 주민등록번호, 이메일 등과 같이 정해져 있는 형식이 있고 사용자가 그 형식대로 제대로 입력했는지 검증을 해야하는 경우 정규표현식을 사용하여 쉽게 검증 가능하다. 정규표현식 사용 방법 java util.regex 패키지를 사용 Pattern 클래스와 Matcher 클래스를 주로 사용 Pattern 클래스 정규 표현식에 대상 문자열을 검증하는 기능으로 matches()메소드를 활용하여 검증 구조는 matches(regex, string) 이며, 일치하면 true, 그렇지 않으면 false를 리턴한다. 숫자 검증하는 예제 Patter..