분류 전체보기 99

IOC / DI / AOP

IOC(Inversion of Control)"제어의 역전" 즉, 객체나 메소드의 생명주기를 개발자가 관리하는 것이 아닌 외부(프레임워크)에서 결정하는 것이다. 개발자는 객체를 직접 생성하지 않고 필요한 객체를 프레임 워크에 요청하면 프레임워크가 알아서 생성하고 메모리에 올려서 관리한다. //IOC 없음public class OrderService { private PaymentService paymentService = new PaymentService(); // 직접 생성}//IOC 사용public class OrderService { @Autowired private PaymentService paymentService; // 스프링이 주입}   DI(Dependency Inject..

[ 런타임에러 ] /by zero

듣도보도 못한 오류임 0으로 나누기 (division by zero)가 발생했을 때 나타나는 오류 • 반복문에서 값 감소로 인해 0이 됨조건문으로 0을 확인하거나, 반복문의 종료 조건을 조정하세요. • 사용자 입력값이 0사용자 입력값을 항상 검증하여 처리하세요. • 수식에서 변수 값이 0으로 설정코드 로직을 확인하여 0이 될 가능성을 배제하거나, 0일 경우 기본값을 설정하세요.

[ 알고리즘 ] 최소 신장 트리, 최단 거리 알고리즘

최소 신장 트리신장 트리 : 그래프의 모든 정점을 포함하는 트리최소 신장 트리 : 가중치가 있는 그래프에서 간선의 가중치 총합이 가장 작은 신장 트리  프림 알고리즘(Prim algorithm) - 정점 기준그리디 알고리즘으로, 임의의 정점을 시작점으로 트리를 확장하면서 최소 신장 트리를 생성하는 방식이다. 💡 프림 알고리즘 과정시작점부터 뻗어 나가는 간선 중 가장 작은 가중치를 가진 노드로 연결한다.시작점과 연결한 노드에서 뻗어 나가는 간선 중 가장 작은 가중치를 가진 노드로 연결한다.반복한다.  크루스칼 알고리즘(Kruskal algorithm) - 간선 기준그리디 알고리즘으로, 간선을 오름차순으로 정렬한 뒤 가중치가 낮은 간선을 선택하면서 최소 신장 트리를 생성한다. 💡 크루스칼 알고리즘 과정..

[ STUDY ]/CS 2024.11.17

[ 알고리즘 ] 정렬 알고리즘

버블 정렬(bubble sort)양옆에 위치한 두 값을 비교하면서 크기 순으로 정렬한다. ⏰ 시간 복잡도 계산배열의 n번째 요소(마지막 요소)를 정렬하는 데 n-1번 비교한다.배열의 n-1번째 요소를 정렬하는 데 n-2번 비교한다.=> (n-1)+(n-2)+(n-3)+ ··· + 2 + 1 = n(n-1) / 2 시간 복잡도 : O(n2)   선택 정렬(selection sort)배열을 순회하면서 배열의 앞에서부터 차례대로 각 인덱스에 들어갈 값을 선택해 위치시킨다.예) 오름차순 : 배열의 첫번째 자리에 최솟값, 두번째 자리에 최솟값 다음으로 작은 값 ⏰ 시간 복잡도 계산(오름차순)배열의 첫 번째 요소를 찾는데 n-1번 비교한다.배열의 두 번째 요소를 찾는데 n-2번 비교한다.=> (n-1)+(n-2)+..

[ STUDY ]/CS 2024.11.17

[ 자료구조 ] 선형 자료구조 & 비선형 자료구조

선형 자료구조선형 자료구조는 연속적으로 데이터가 나열되는 자료구조를 나타낸다. 배열(array)정해진 크기만큼 데이터가 일렬로 저장되는 정적 자료구조 🔍 용어   요소(element)각각의 데이터   인덱스(index)데이터를 가리키는 번호  🔍 연산   연산설명시간복잡도   접근특정 인덱스에 접근O(1)   검색데이터를 검색O(n)   삽입특정 위치에 데이터 삽입O(n)   삭제데이터 삭제O(n)  연결 리스트(linked list)대표적인 선형 자료구조의 하나로 배열과 달리 크기가 정해져 있지 않은 동적 자료구조이다. 🔍 용어   노드(node)데이터와 다음 노드가 저장된 주소값을 가짐   헤드(head) 포인터첫 번째 노드를 가리킨다.   테일(tail) 포인터마지막 노드를 가리킨다.  🔍 ..

[ STUDY ]/CS 2024.11.17

[ 데이터베이스 ] 조인

조인조인이란 여러 테이블을 합쳐 원하는 데이터를 얻는 작업을 뜻한다.  🔍 조인 연산을 할 때 사용하는 연산자ON조인 연산에 대한 조건절을 작성할 때 사용각 테이블에서 어떠한 속성을 사용해 연산을 수행할지 나타냄USING조인 연산을 하려는 테이블에서 속성명이 동일할 경우 USING연산자 뒤에 공통되는 속성명만 작성WHERE테이블에서 원하는 데이터를 조회하기 위한 조건절을 작성할 때 사용INWHERE절과 함께 사용IN 연산자 뒤에 나오는 조건에 하나라도 해당하는 값을 검색BETWEENWHERE절과 함께 사용특정 범위에 속하는 데이터를 조회LIKEWHERE절과 함께 사용특정 데이터를 조회할 때 사용% : 길이를 알 수 없는 문자, _ : 문자 하나  내부 조인2개 이상의 테이블에서 공통 속성을 가진 데이터..

[ STUDY ]/CS 2024.11.16

[ 데이터베이스 ] 트랜잭션

트랜잭션트랜잭션이란 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위 또는 일련의 연산을 의미한다. 트랜잭션의 4가지 특성(ACID)    원자성(Atomicity) 트랜잭션이 데이터베이스에 완전히 반영되거나 아예 실행되지 않아야 한다.    일관성(Consistency)트랜잭션 수행이 완료된 데이터베이스는 일관성이 있다.    독립성(Isolation)수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없다.    영속성(Durability)완료한 트랜잭션의 결과가 데이터베이스에 영구적으로 반영된다.  트랜잭션을 제어하기 위한 명령어(TCL)    COMMIT트랜잭션이 정상적으로 종료되어 데이터베이스에 변경 사항을 반영한다.    ROLLBACK트랜잭션이 비정상적으로 종료되어 트랜잭션이 수행한 변경..

[ STUDY ]/CS 2024.11.16

[ 데이터베이스 ] 관계형 데이터베이스

키(key)키는 데이터베이스에서 튜플을 구분하기 위한 속성 또는 속성의 집합을 의미한다.유일성 : 하나의 키 값으로 튜플을 식별할 수 있는 특성최소성 : 튜플을 식별하는데 필요한 속성만으로 이루어져 있는 특성💡 DBMS의 다섯가지 키슈퍼 키 : 튜플을 식별할 수 있어 유일성은 만족하지먼, 최소성은 만족하지 않아도 된다.후보 키 : 유일성과 최소성을 만족해야한다.기본 키 : 후보 키 중 메인이 되는 키로 NULL 값을 가지면 안된다.대체 키 : 후보 키 중 기본 키를 제외한 키외래 키 : 다른 테이블의 기본 키를 참조하는 키  무결성데이터베이스에 저장된 데이터와 실제 데이터가 일치하는 정확성과, 데이터가 일정하게 유지되는 일관성을 의미한다.개체 무결성 : 모든테이블이 기본키를 가져야한다.(기본키는 최소성..

[ STUDY ]/CS 2024.11.15

[ 데이터베이스 ] 데이터베이스의 종류

데이터베이스란데이터베이스는 사용자나 프로그램에서 사용하기 위해 저장 및 관리하는 데이터 집합이다. 데이터베이스의 특징실시간 접근 : 데이터베이스에 언제든지 접근해 필요한 처리가 가능하다.동시 공유 : 동시에 여러 사용자가 데이터베이스에 접근할 수 있다.지속적 변화 : 데이터 갱신, 삽입, 삭제를 통해 계속 변화한다.내용 기반 참조 : 데이터의 값을 이용해 데이터에 접근할 수 있다. 데이터베이스 개념적 요소개체(entity, 엔티티)데이터로 표현하려는 대상을 의미한다.하나 이상의 속성으로 구성한다.속성(attribute)개체의 특성과 상태를 나타내며, 데이터베이스를 구성하는 가장 작은 논리적 단위관계(relationship)개체 간에 어떤 관련이 있는지를 나타내며, 주로 동사로 표현한다. 스키마데이터의 구..

[ STUDY ]/CS 2024.11.15

이차원 배열 정렬하기(백준 10814)

2차원 배열 정렬하는 방법백준 10814번을 풀면서 2차원 배열을 정렬하는 문제가 나왔다.💡 Arrays.sort와 Comparator를 활용한 배열 정렬배열에는 아래와 같이 데이터가 들어있다.arr[i][0]를 기준으로 정렬해야한다.String[][] arr = { {"21", "Junkyu"}, {"21", "Dohyun"}, {"20", "Sunyoung"}};  2차원 배열의 경우, 특정 열(column)을 기준을 정렬하려면 Comparator을 사용해야한다.compare메소드는 두 개의 매개변수를 비교한다. o1과 o2는 비교 대상 배열의 두 행을 나타낸다.여기서는 두 행의 0번째 요소를 비교한다.Arrays.sort(arr, new Comparator() { @Over..