본문 바로가기

분류 전체보기149

[알고리즘] 다익스트라(Dikstra Algorithm) 1. 다익스트라 알고리즘 그래프의 한 노드에서 각 모든 노드까지 최단거리를 구하는 알고리즘 음의 가중치를 가지면 최소 비용의 음의 무한대 발산, 그리디 알고리즘 적용 불가능 등이 발생. 초기 모델은 O(V^2)의 시간복잡도를 가졌다. 이후 우선순위 큐 등을 이용한 고안된 알고리즘이 탄생했고, 현재는 O((V+E)log V)의 시간복잡도를 가지고 있다(만일 연결 그래프라면 O(ElogV)까지 시간 복잡도를 줄일 수 있다고 한다). 일반적으로는 그래프가 희소 그래프인 경우에 우선순위 큐를 이용하는 것이 낫다고 한다. 연결 그래프 : 모든 두 꼮짓점 사이에 경로가 존재하는 그래프 희소 그래프 : 밀집 그래피의 반대 밀집 그래프 : 간선의 수가 최대에 가까운 그래프 : 간선 개수 = 정점의 개수 ^2와 근사하다.. 2024. 1. 31.
[프레임워크] .NET 이란? 1. .NET 이란? 마이크로소프트에서 개발한 무료, 오픈소스, 크로스플랫폼 프레임워크 웹 어플리케이션, 데스크탑 어플리케이션, 게임, 모바일 어플리케이션 등 다양한 종류의 어플리케이션 개발 가능 C#, F3, Visual Basic .NET 등 다양한 언어 지원 대규모 개발자 커뮤니티와 다양한 미리 제작된 구성요소 라이브러리를 보유하여 개발을 더욱 빠르고 쉽게 해준다. 코드 액세스 보안 및 샌드박스 환경과 같은 기능을 제공하여 어플리케이션 보안 향상 Window, Linux 및 macOS를 포함한 다양한 플랫폰에서 실행될 수 있도록 지원 2. .NET SDK .NET 스프트웨어 개발 키트를 의미 .NET 어플리케이션을 개발, 테스트 및 배포하기 위해 필요한 도구, 라이브러리 및 런타임 환경을 제공 .N.. 2023. 12. 18.
[알고리즘] LCS(Longest Common Substring or Subsequence) 1. LCS란 최장 공통 부분수열(L.C.Subsequence) 혹은 최장 공통 문자열 (L.C.Substring)을 말한다. 각각의 차이는 아래 그림과 같다. 최장 공통 부분수열은 BCDF, BCDE가 될 수 있다. 부분 수열은 분자 사이를 건너뛰어 공통이 되면 가장 긴 문자열을 찾으면 된다. 최장 공통 문자열은 BCD로 부분 문자열이 아니기 때문에 한번에 이어져 있는 문자열만 가능하다. 1. 최장 공통 문자열(Longest Common Substring) class Solution_0045 { public static int solution(String a, String b) { int[][] cal = new int[a.length() + 1][b.length() + 1]; int ans = 0; .. 2023. 11. 6.
[Spring] IOC 컨테이너 1. IOC 란 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미 컴포넌트 의존 관계 설정(Component dependeny resolution), 설정(Configuration) 및 생명주기(LifeCycle)을 해결하기 위한 디자인 패턴 2. IOC 컨테이너 스프링 프레임워크에서 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너 일반적 컨테이너 : 객체의 생명주기 관리, 생성된 인스턴스들에게 추가적인 기능 제공 인스턴스 생성부터 소멸까지 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다 객체 관리 주체가 프레임워크가 되기 떄문에 개발자는 로직에 집중할 수 있는 장점이 있다. IoC 컨테이너는 객체의 생성을 책임지고 의존성 관리 POJO의 생성, 초기화.. 2023. 10. 31.