최소공배수란? 두 수 이상이 공통으로 가지는 배수 중 가장 작은 값을 의미합니다. 예시숫자배수1212, 24, 36, 48, 60, 72, ...1818, 36, 54, 72, ... 두 수 12와 18의 공통 배수는36, 72, ... 입니다. 👉 이 중 가장 작은 수는 36입니다.즉, 최소공배수 LCM(12, 18) = 36 입니다. 특징두 수가 공통으로 나눌 수 있는 가장 작은 배수반복되는 주기를 찾을 때 유용최대공약수와 곱셈 관계로 연결됨실무에선 최대공약수(GCD)를 이용해 빠르게 계산 최대공약수와 최소공배수의 차이구분의미예시 (12, 18 기준)최대공약수 (GCD)두 수를 나눌 수 있는 가장 큰 수6최소공배수 (LCM)두 수로 나눌 수 있는 가장 작은 수36 📌 공식 관계GCD(a,b..
CS
최대공약수란(GCD)?두 수 이상에서 모두 나누어 떨어지는 가장 큰 수를 의미합니다. 예시숫자약수121, 2, 3, 4, 6, 12181, 2, 3, 6, 9, 18 두 수 12와 18의 공통 약수는1, 2, 3, 6 입니다. 👉 이 중 가장 큰 수는 6입니다.즉, 최대공약수 GCD(12, 18) = 6 입니다. 특징두 수의 공통된 약수 중 가장 큰 수나눗셈 연산을 활용하여 빠르게 계산 가능최소공배수와는 공식적으로 연관됨수학뿐 아니라 코딩 테스트, 암호학 등에도 활용 실습 예제1) 기본 방식 (모든 약수 검사)// 기본 약수 검사 방식public static int basicGCD(int a, int b) { int gcd = 1; for (int i = 1; i ❌ 단점: 반복이 많아..
이 객체, 하나만 있으면 되지 않을까? 소프트웨어를 만들다 보면, 객체를 하나만 생성해서 공유해야 하는 상황이 자주 발생합니다.예를 들어,DB 연결을 관리하는 클래스로그를 남기는 클래스설정 값을 읽어오는 클래스이런 경우, 싱글톤 패턴(Singleton Pattern)을 적용하면 효율적입니다. 싱글톤 패턴이란?프로그램 전체에서 딱 하나만 만들어서, 모두가 공유해서 쓰는 객체를 만드는 방법이에요. 예를 들어,회사에 하나뿐인 복사기를 직원들이 같이 쓰는 느낌!콘서트장 1개 좌석표 시스템을 모두가 쓰는 상황! 왜 싱글톤이 필요할까요?이유설명메모리 절약인스턴스를 하나만 생성하므로 불필요한 리소스 낭비 방지일관된 접근동일한 객체를 여러 곳에서 공유하므로 상태가 일치전역 접근프로그램 전체에서 동일한 인스턴..
배수란? 어떤 정수 A에 1, 2, 3, ... 과 같은 자연수를 곱해 만든 수를 A의 배수라고 합니다. 즉, A × 자연수 = A의 배수 예를 들어,3의 배수는?👉 3×1=3, 3×2=6, 3×3=9, …3, 6, 9, 12, 15, ... 이 모두가 3의 배수입니다. 예시숫자배수 예시22, 4, 6, 8, 10, ...55, 10, 15, 20, ...1010, 20, 30, 40, ...❗ 배수는 무한히 많습니다. 계속 곱하기만 하면 되니까요. 특징모든 자연수는 자기 자신이 가장 작은 배수입니다.A의 배수는 A로 나누어 떨어지는 수입니다.A의 배수라면, A는 그 수의 약수가 됩니다.공배수는 두 수의 공통 배수를 의미합니다.최소공배수(LCM)는 가장 작은 공배수를 의미합니다. 약수와 배수의 차..
약수란?어떤 정수 A를 나누어 떨어지게 하는 수 B가 있을 때, B는 A의 약수라고 합니다. 예를 들어,12 ÷ 3 = 4 → 나누어 떨어지죠?👉 따라서 3은 12의 약수입니다. 예시숫자 12의 약수를 모두 구해볼까요?12를 나눴을 때 나머지가 0이 되는 숫자를 찾으면 됩니다:1 (12 ÷ 1 = 12)2 (12 ÷ 2 = 6)3 (12 ÷ 3 = 4)4 (12 ÷ 4 = 3)6 (12 ÷ 6 = 2)12 (12 ÷ 12 = 1)👉 12의 약수 = {1, 2, 3, 4, 6, 12} 특징특징설명1모든 자연수의 약수는 항상 1과 자기 자신이 포함됩니다.짝수2를 약수로 갖습니다.홀수2로 나눠지지 않기 때문에 2는 약수가 아닙니다.소수약수가 1과 자기 자신밖에 없습니다.약수의 개수어떤 수를 소인수분해하..
디자인 패턴이란? ✅ 자바 개발자를 위한 설계의 시작이라고 할 수 있습니다. 소프트웨어를 개발하다 보면, 우리는 이런 비슷한 문제를 반복적으로 마주하게 됩니다.이 로직, 재사용할 수 없을까?이 클래스 간의 결합도가 너무 높은데 어떻게 분리하지?나중에 요구사항이 바뀌어도 쉽게 대응할 수 있도록 설계하려면? 이런 고민을 해결하기 위해 등장한 것이 바로 디자인 패턴(Design Pattern) 입니다. 디자인 패턴은 소프트웨어 설계 과정에서 반복적으로 발생하는 문제를 해결하기 위한 검증된 설계 방법입니다.즉, 앞서 많은 개발자들이 경험을 통해 만들어낸 "문제 해결을 위한 베스트 설계 방법"이라고 할 수 있습니다. 디자인 패턴의 필요성1. 코드의 재사용성과 유지보수성 향상디자인 패턴을 적용하면 구조화된 설계가..
안녕하세요🖐️ 이번시간에는 정렬 알고리즘 중 하나인 삽입 정렬에 대해 간단히 알아보는 시간을 갖겠습니다~ 삽입 정렬 (Insertion Sort)삽입 정렬은 선택 정렬과 버블 정렬처럼 기본적이면서 이해하기 쉬운 정렬 알고리즘 중 하나입니다. 이 알고리즘은 각 단계에서 배열의 요소를 이미 정렬된 부분과 비교하여, 각 요소가 올바른 위치에 삽입될 수 있도록 합니다. 즉, 하나의 요소를 적절한 위치에 삽입하는 과정을 배열의 모든 요소에 대해 반복하여 전체 배열을 정렬합니다. 삽입 정렬의 작동 방식은 다음과 같은 순서로 진행됩니다. (오름차순 기준)배열의 두 번째 요소부터 처리를 시작하며, 이 요소를 "현재 요소"로 간주합니다.현재 요소를 그 이전의 정렬된 배열 부분과 비교합니다. 현재 요소가 이전 요소..
안녕하세요🖐️ 이번시간에는 정렬 알고리즘 중 하나인 선택 정렬에 대해 간단히 알아보는 시간을 갖겠습니다~ 선택 정렬 (Selection Sort) 선택 정렬은 버블 정렬처럼 간단하고 이해하기 쉬운 정렬 알고리즘 중 하나입니다. 주어진 배열을 처리할 때, 이 알고리즘은 전체 배열을 차례대로 탐색하면서 각 단계마다 남아 있는 요소 중 최솟값을 찾습니다(오름차순 정렬 시). 찾은 최솟값을 현재 위치의 값과 바꿔치기하며, 이러한 절차를 배열이 전부 정렬될 때까지 지속적으로 수행합니다. 선택 정렬의 작동방식을 순서대로 나열하면 아래와 같은 과정을 진행합니다. (오름차순) 배열의 첫 번째 위치를 최소값의 위치로 가정합니다. 현재 위치 이후의 배열에서 실제 최소값의 위치를 찾습니다. 현재 위치의 값과 찾은 최솟값의 ..
안녕하세요🖐️ 이번시간에는 정렬 알고리즘 중 하나인 버블 정렬에 대해 간단히 알아보는 시간을 갖겠습니다~ 버블 정렬 (Bubble Sort) 버블 정렬은 정렬 알고리즘 중 가장 이해하기 쉽고 구현하기 간단한 알고리즘입니다. 하나의 배열이 주어졌을 때, 배열의 각 원소를 순차적으로 비교하고, 인접한 원소끼리의 순서가 잘못되어 있으면 서로 위치를 바꿔주는 과정을 반복합니다. 이 과정을 배열의 길이만큼 반복하면서, 각 반복마다 최소 하나의 원소가 최종 위치로 이동합니다. 버블 정렬의 작동방식을 순서대로 나열하면 아래와 같은 과정을 진행합니다. (오름차순) 배열의 첫 번째 원소부터 시작하여 인접한 원소와 비교합니다. 현재 원소가 다음 원소보다 크면, 두 원소의 위치를 바꿉니다. 다음 인접한 원소로 이동하여 같은..
안녕하세요🖐️ 이번시간에는 알고리즘 개념 중 하나인 복잡도에 대해 간단히 알아보는 시간을 갖겠습니다~ 복잡도 복잡도란 알고리즘의 효율성을 평가하는 기준입니다. 복잡도에는 다음과 같은 종류가 있습니다. 시간 복잡도 (Time Complexity) : 실행에 필요한 시간을 평가한 것 공간 복잡도 (Space Complexity) : 기억 영역과 파일 공간이 얼마나 필요한가를 평가한 것 시간 복잡도 (Time Complexity) me Complexity) 시간 복잡도는 알고리즘을 실행하는 데 필요한 시간이 얼마나 되는지를 추상적으로 표현한 것입니다. 이는 주로 입력 크기에 대한 알고리즘의 실행 시간 증가율로 나타냅니다. 시간 복잡도를 분석할 때는 최악의 경우, 평균적인 경우, 최선의 경우 복잡도를 고려할 수..